<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Persistence Ignorance: OK, I think I get it now.</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx</link><description>Let me apologize up front for how long it has taken me to get back to this topic . What I can say, though, is that in the intervening interval I have devoted real time to studying agile design principles and domain driven design. Initially I thought that</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Persistence Ignorance: OK, I think I get it now.</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#3039308</link><pubDate>Sat, 02 Jun 2007 13:07:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3039308</guid><dc:creator>Udi Dahan</dc:creator><description>&lt;p&gt;First of all, that's great to hear.&lt;/p&gt;
&lt;p&gt;Second, the context for persistence ignorance is the Domain Model pattern - I've got a write up about it here:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://udidahan.weblogs.us/2007/04/21/domain-model-pattern/"&gt;http://udidahan.weblogs.us/2007/04/21/domain-model-pattern/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That object model should be independent of UI concerns as well. The same goes for how the data in it get sent across the wire.&lt;/p&gt;
&lt;p&gt;By keeping it isolated, we make it that much more testable. Since our complex business logic is embodied in it, we're really going to need to know if some change we made broke other assumptions.&lt;/p&gt;
&lt;p&gt;That said, these concerns will definitely affect the way we design the domain model.&lt;/p&gt;
</description></item><item><title>re: Persistence Ignorance: OK, I think I get it now.</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#3051073</link><pubDate>Sun, 03 Jun 2007 00:55:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3051073</guid><dc:creator>rogerj</dc:creator><description>&lt;p&gt;Danny,&lt;/p&gt;
&lt;p&gt;Pingback from &lt;a rel="nofollow" target="_new" href="http://oakleafblog.blogspot.com/2007/06/entity-framework-updates.html"&gt;http://oakleafblog.blogspot.com/2007/06/entity-framework-updates.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and thanks for the heads-up.&lt;/p&gt;
&lt;p&gt;--rj&lt;/p&gt;
</description></item><item><title>re: Persistence Ignorance: OK, I think I get it now.</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#3053647</link><pubDate>Sun, 03 Jun 2007 06:40:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3053647</guid><dc:creator>dsimmons@microsoft.com</dc:creator><description>&lt;p&gt;Yes, Udi, I have been spending a lot of time thinking about domain models, domain driven design and the like. &amp;nbsp;And yes, certainly it makes sense to isolate the domain model from other concerns. &amp;nbsp;We have been working for some time to isolate domain models from UI and to make reasonable patterns for remoting them without having an impact on the model. &amp;nbsp;The question about persistence gets a bit interesting, though, given that often business logic needs to interact with some sort of persistence abstraction in order to retrieve or manipulate related domain objects. &amp;nbsp;I've known all along that there's huge value in isolating the domain model from changes to the database (that's one of the great advantages of a system like the EF where you can refactor your database, change the mapping and keep your domain objects unmodified). &amp;nbsp;What I didn't understand until recently was just how *completely* isolated it was important to make the domain model in some situations. &amp;nbsp;In fact if you look at a variety of the popular literature on this topic, not everyone believes in total isolation (attributes can be a reasonable tradeoff, for instance, because they are relatively unintrusive, etc.).&lt;/p&gt;
&lt;p&gt;In any case, we're now working to create a framework which enables a range of options so that you can be completely ignorant or you can bake various amounts of presistence awareness into your domain objects depending upon the needs of your particular situation.&lt;/p&gt;
&lt;p&gt;I would also assert that nothing about the EF should prevent you from employing any of the techniques which you would normally use to achieve separation from UI or remoting/messaging.&lt;/p&gt;
&lt;p&gt;- Danny&lt;/p&gt;
</description></item><item><title>Persistence Ignorance in the Entity Framework</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#3067508</link><pubDate>Sun, 03 Jun 2007 22:56:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3067508</guid><dc:creator>Ayende @ Rahien</dc:creator><description>&lt;p&gt;Persistence Ignorance in the Entity Framework&lt;/p&gt;
</description></item><item><title>re: Persistence Ignorance: OK, I think I get it now.</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#3100307</link><pubDate>Tue, 05 Jun 2007 19:49:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3100307</guid><dc:creator>Udi Dahan</dc:creator><description>&lt;p&gt;&amp;quot;The question about persistence gets a bit interesting, though, given that often business logic needs to interact with some sort of persistence abstraction in order to retrieve or manipulate related domain objects.&amp;quot;&lt;/p&gt;
&lt;p&gt;The logic within the Domain Model just navigates the object graph for retrieval, and calls methods (which change the object's internal data) in order to manipulate those domain objects.&lt;/p&gt;
&lt;p&gt;In the case of improving the performance of object retrieval, you'll want a way to ask for an entire sub-graph to be loaded in a single database hit, rather than having objects loaded on demand as you navigate the graph. I've got a post up showing a design that clearly separates out the concern of defining object-graph retrieval here:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/"&gt;http://udidahan.weblogs.us/2007/04/23/fetching-strategy-design/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I've got another post up on showing different styles of having the domain model communicate out persistence demands to the Service Layer, which actually calls the &amp;quot;persistence abstraction&amp;quot;. Take a look and tell me what you think:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://udidahan.weblogs.us/2007/06/04/performant-and-explicit-domain-models/"&gt;http://udidahan.weblogs.us/2007/06/04/performant-and-explicit-domain-models/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Persistence Ignorance: OK, I think I get it now.</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#3121721</link><pubDate>Wed, 06 Jun 2007 20:31:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3121721</guid><dc:creator>BenScheirman</dc:creator><description>&lt;p&gt;I'm really pleased to hear this. &amp;nbsp;I never did chime in publicly on the debate, but I'm firm with the PI folks.&lt;/p&gt;
&lt;p&gt;But, as you say, there are cases when Persistence Aware objects give you a lot of benefits. &amp;nbsp;We just want to be given the flexibility to choose.&lt;/p&gt;
&lt;p&gt;Also, the most effective way that I have found to flesh out a good domain model is to actually write it test-first (for me, anyway). &amp;nbsp;If that meant that I had to create a table (or tables) and setup connection information, then I'm going against the grain. &amp;nbsp;The PI approach will allow me to worry about persistence once the domain model has settled some, so there isn't any wasted effort in mapping to the database so early on.&lt;/p&gt;
</description></item><item><title>EF Persistence Ignorance Recap</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#5148591</link><pubDate>Wed, 26 Sep 2007 21:05:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5148591</guid><dc:creator>system.data.objects dev guy</dc:creator><description>&lt;p&gt;I had someone email me a question today about POCO, IPOCO, persistence ignorance and the EF, and I responded&lt;/p&gt;
</description></item><item><title>ADO.NET Entity Framework Vote of No Confidence</title><link>http://blogs.msdn.com/dsimmons/archive/2007/06/02/persistence-ignorance-ok-i-think-i-get-it-now.aspx#8650231</link><pubDate>Wed, 25 Jun 2008 05:17:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8650231</guid><dc:creator>BlogCoward</dc:creator><description>&lt;p&gt;ADO.NET Entity Framework Vote of No Confidence&lt;/p&gt;
</description></item></channel></rss>