<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Proteus: Unit Test Utility and Domain Foundation code goes OSS!</title>
	<atom:link href="http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/feed/" rel="self" type="application/rss+xml" />
	<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/</link>
	<description>Miscellaneous musings on life, .NET development, and related things that don't really matter</description>
	<pubDate>Thu, 17 May 2012 21:43:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: sbohlen</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-22346</link>
		<dc:creator>sbohlen</dc:creator>
		<pubDate>Tue, 20 Oct 2009 11:36:49 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-22346</guid>
		<description>@mynkow:

Well, that's why it *is* open-source...feel free to change the behavior as much as you feel you need to for your own situation :)

Glad you got it working satisfactorily for you!

-Steve B.</description>
		<content:encoded><![CDATA[<p>@mynkow:</p>
<p>Well, that&#8217;s why it *is* open-source&#8230;feel free to change the behavior as much as you feel you need to for your own situation <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Glad you got it working satisfactorily for you!</p>
<p>-Steve B.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mynkow</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-22319</link>
		<dc:creator>mynkow</dc:creator>
		<pubDate>Mon, 19 Oct 2009 21:31:58 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-22319</guid>
		<description>Thanks Steve. I did some tests last week with reflection and read/write properties. With the system that we are building reflection will slow the program too much. The results are that with reflection we are ten times slower with 50 000 records at a time. I changed the proteus with read/write properties and added createdDate and createdBy fields and I am happy with that. 

And Yes, you are right that permitting the properties to be read only is good but I think it is better to speed up the system instead ;)

Thanks for the help, It was really helpful

Greetings from Bulgaria</description>
		<content:encoded><![CDATA[<p>Thanks Steve. I did some tests last week with reflection and read/write properties. With the system that we are building reflection will slow the program too much. The results are that with reflection we are ten times slower with 50 000 records at a time. I changed the proteus with read/write properties and added createdDate and createdBy fields and I am happy with that. </p>
<p>And Yes, you are right that permitting the properties to be read only is good but I think it is better to speed up the system instead <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Thanks for the help, It was really helpful</p>
<p>Greetings from Bulgaria</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sbohlen</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-22296</link>
		<dc:creator>sbohlen</dc:creator>
		<pubDate>Mon, 19 Oct 2009 11:02:21 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-22296</guid>
		<description>@mynkow:

Sorry I didn't reply to this sooner -- somehow I missed your comment in my rss reader.  The intent was that you would use reflection in the event listener implementation to set the values of the underlying fields in the class for those read-only properties.

Yes, its got some (minor) overhead vs. setting the property directly, but IMO this is a better strategy than permitting these properties to be read-write on the domain entity.

Hope this response finds you in time and sorry for the delay~!</description>
		<content:encoded><![CDATA[<p>@mynkow:</p>
<p>Sorry I didn&#8217;t reply to this sooner &#8212; somehow I missed your comment in my rss reader.  The intent was that you would use reflection in the event listener implementation to set the values of the underlying fields in the class for those read-only properties.</p>
<p>Yes, its got some (minor) overhead vs. setting the property directly, but IMO this is a better strategy than permitting these properties to be read-write on the domain entity.</p>
<p>Hope this response finds you in time and sorry for the delay~!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mynkow</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-22045</link>
		<dc:creator>mynkow</dc:creator>
		<pubDate>Tue, 13 Oct 2009 16:04:56 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-22045</guid>
		<description>It is me again :)

I have a question about the UpdatedDateTime and UpdatedBy. I implemented ISaveOrUpdateEventListener but I want to ask you whether we can do something global. So we can have only one implementation. The problem is that these properties are read only.

Greetings from Bulgaria :)</description>
		<content:encoded><![CDATA[<p>It is me again <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I have a question about the UpdatedDateTime and UpdatedBy. I implemented ISaveOrUpdateEventListener but I want to ask you whether we can do something global. So we can have only one implementation. The problem is that these properties are read only.</p>
<p>Greetings from Bulgaria <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mynkow</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-22005</link>
		<dc:creator>mynkow</dc:creator>
		<pubDate>Mon, 12 Oct 2009 18:06:23 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-22005</guid>
		<description>Thanks Steve. This is the problem with ServerExplorer: http://archives.postgresql.org/pgsql-novice/2005-09/msg00042.php

Well, I will go trough the nDbUnit's code and If I can handle postgre then I will rename all 1000 rows and tables with small caps/letters :D But server Explorer is now running with small test table :) I hope I get the code and write a patch ;)</description>
		<content:encoded><![CDATA[<p>Thanks Steve. This is the problem with ServerExplorer: <a href="http://archives.postgresql.org/pgsql-novice/2005-09/msg00042.php" rel="nofollow">http://archives.postgresql.org/pgsql-novice/2005-09/msg00042.php</a></p>
<p>Well, I will go trough the nDbUnit&#8217;s code and If I can handle postgre then I will rename all 1000 rows and tables with small caps/letters <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> But server Explorer is now running with small test table <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> I hope I get the code and write a patch <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sbohlen</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-21994</link>
		<dc:creator>sbohlen</dc:creator>
		<pubDate>Mon, 12 Oct 2009 15:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-21994</guid>
		<description>@mynkow:

Oh, and one more thing -- as you can see from this issue on the NDbUnit site ( http://code.google.com/p/ndbunit/issues/detail?id=13 ) there is some issue with its OleDb infrastructure not working with other than SQL Server (yeah, its a screw-up to be sure) so even if you could get the dataset issue solved, you wouldn't be able to use NDbUnit (or Proteus) with PostGreSQL until this was resolved (or until I -- or someone else! -- writes a shim for PostGre for it.

As with most OSS projects, patches are welcome when accompanied by requisite unit tests :)

-Steve B.</description>
		<content:encoded><![CDATA[<p>@mynkow:</p>
<p>Oh, and one more thing &#8212; as you can see from this issue on the NDbUnit site ( <a href="http://code.google.com/p/ndbunit/issues/detail?id=13" rel="nofollow">http://code.google.com/p/ndbunit/issues/detail?id=13</a> ) there is some issue with its OleDb infrastructure not working with other than SQL Server (yeah, its a screw-up to be sure) so even if you could get the dataset issue solved, you wouldn&#8217;t be able to use NDbUnit (or Proteus) with PostGreSQL until this was resolved (or until I &#8212; or someone else! &#8212; writes a shim for PostGre for it.</p>
<p>As with most OSS projects, patches are welcome when accompanied by requisite unit tests <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>-Steve B.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sbohlen</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-21993</link>
		<dc:creator>sbohlen</dc:creator>
		<pubDate>Mon, 12 Oct 2009 15:34:27 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-21993</guid>
		<description>@mynkow:

The database-related behavior of the Proteus library is tightly-dependent on NDbUnit which in turn is dependent on datasets as the persistence mechanism for the test data it loads/resets/etc.

A few questions:
1) what troubles (specifically) are you having with postgres + server explorer?

2) If you cannot conn to the DB using server explorer (to create the XSD for the dataset) have you tried using MyGeneration to generate the XSD for you (perhaps better luck at connecting to postgres from there)?

3) If datasets/XML weren't to be the persistence mechanism for the test data to load/reset/etc., do you have any suggestions for any alternate file-based persistence mechanisms that might be used in their place?  (obviously for the Proteus database facilities to have any value, they need to be able to load persisted data into the DB on command).

Thoughts --?</description>
		<content:encoded><![CDATA[<p>@mynkow:</p>
<p>The database-related behavior of the Proteus library is tightly-dependent on NDbUnit which in turn is dependent on datasets as the persistence mechanism for the test data it loads/resets/etc.</p>
<p>A few questions:<br />
1) what troubles (specifically) are you having with postgres + server explorer?</p>
<p>2) If you cannot conn to the DB using server explorer (to create the XSD for the dataset) have you tried using MyGeneration to generate the XSD for you (perhaps better luck at connecting to postgres from there)?</p>
<p>3) If datasets/XML weren&#8217;t to be the persistence mechanism for the test data to load/reset/etc., do you have any suggestions for any alternate file-based persistence mechanisms that might be used in their place?  (obviously for the Proteus database facilities to have any value, they need to be able to load persisted data into the DB on command).</p>
<p>Thoughts &#8211;?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mynkow</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-21989</link>
		<dc:creator>mynkow</dc:creator>
		<pubDate>Mon, 12 Oct 2009 12:48:07 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-21989</guid>
		<description>Yes, yes. :) Now I understand this. I think that I will add and created, createdby fields too.

Q:Is it possible to use Proteus.Utility.UnitTest and load data without using datasets? Because I have postgre server and I have big problems connecting server explorer with that server.

Thanks Steve :)</description>
		<content:encoded><![CDATA[<p>Yes, yes. <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Now I understand this. I think that I will add and created, createdby fields too.</p>
<p>Q:Is it possible to use Proteus.Utility.UnitTest and load data without using datasets? Because I have postgre server and I have big problems connecting server explorer with that server.</p>
<p>Thanks Steve <img src='http://unhandled-exceptions.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sbohlen</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-21774</link>
		<dc:creator>sbohlen</dc:creator>
		<pubDate>Tue, 06 Oct 2009 13:46:14 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-21774</guid>
		<description>@mynkow:

Sure.  The intent had always been to dig into those aspects when I completed the Autumn of Agile screencast series, but that's still delayed so I've no problem explaining the intent here...

LastUpdatedBy and LastUpdatedDataTime are properties that the base class provides for NHibernate event listeners to populate on Save/Update actions performed on the objects.  

Although I didn't get that far (yet!) in the screencasts, NHibernate provides a rich persistence eventing model that permits you to 'step in' at various points in the CRUD lifecycle and the intent was to wire up an event listeners that would populate these properties right before the object is committed to the database on either an INSERT (save) or UPDATE (update) operation.  FWIW, the interface needed to be implemented is ISaveOrUpdateEventListener (not surprisingly!).

The intent if IsTransient is to solve the 'problem' of not wanting to expose the ID of the persistent object outside the domain entity (or more importantly, the 'meaning' of the ID property outside the domain entity).  Rather than code outside the entity having to inspect the ID of the entity and compare it to some 'known uninitialized value' (e.g., '0' if an int/long or '0000-0000-0000...etc' in the case of a GUID), the IsTransient property permits the object itself to encapsulate its understanding of how *it* can know if it's persistent or transient and simply report that fact back to the outside world as a boolean FACT.  In this way, the code consuming the object (that might care if it's persistent or transient) doesn't have undue intimate knowledge of HOW to determine that fact but instead just asks the object the question and gets an answer in the form of the IsTransient property.

Does that all make sense...?</description>
		<content:encoded><![CDATA[<p>@mynkow:</p>
<p>Sure.  The intent had always been to dig into those aspects when I completed the Autumn of Agile screencast series, but that&#8217;s still delayed so I&#8217;ve no problem explaining the intent here&#8230;</p>
<p>LastUpdatedBy and LastUpdatedDataTime are properties that the base class provides for NHibernate event listeners to populate on Save/Update actions performed on the objects.  </p>
<p>Although I didn&#8217;t get that far (yet!) in the screencasts, NHibernate provides a rich persistence eventing model that permits you to &#8217;step in&#8217; at various points in the CRUD lifecycle and the intent was to wire up an event listeners that would populate these properties right before the object is committed to the database on either an INSERT (save) or UPDATE (update) operation.  FWIW, the interface needed to be implemented is ISaveOrUpdateEventListener (not surprisingly!).</p>
<p>The intent if IsTransient is to solve the &#8216;problem&#8217; of not wanting to expose the ID of the persistent object outside the domain entity (or more importantly, the &#8216;meaning&#8217; of the ID property outside the domain entity).  Rather than code outside the entity having to inspect the ID of the entity and compare it to some &#8216;known uninitialized value&#8217; (e.g., &#8216;0&#8242; if an int/long or &#8216;0000-0000-0000&#8230;etc&#8217; in the case of a GUID), the IsTransient property permits the object itself to encapsulate its understanding of how *it* can know if it&#8217;s persistent or transient and simply report that fact back to the outside world as a boolean FACT.  In this way, the code consuming the object (that might care if it&#8217;s persistent or transient) doesn&#8217;t have undue intimate knowledge of HOW to determine that fact but instead just asks the object the question and gets an answer in the form of the IsTransient property.</p>
<p>Does that all make sense&#8230;?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mynkow</title>
		<link>http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/comment-page-1/#comment-21773</link>
		<dc:creator>mynkow</dc:creator>
		<pubDate>Tue, 06 Oct 2009 12:52:56 +0000</pubDate>
		<guid isPermaLink="false">http://unhandled-exceptions.com/blog/index.php/2009/03/16/proteus-unit-test-utility-and-domain-foundation-code-goes-oss/#comment-21773</guid>
		<description>Hi Steve,

can u explain the purpose of the LastUpdatedBy, LastUpdatedDateTime and IsTransient and the more important how they actually work. I did not find any tests for these fields/props.

10x</description>
		<content:encoded><![CDATA[<p>Hi Steve,</p>
<p>can u explain the purpose of the LastUpdatedBy, LastUpdatedDateTime and IsTransient and the more important how they actually work. I did not find any tests for these fields/props.</p>
<p>10x</p>
]]></content:encoded>
	</item>
</channel>
</rss>

