<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Entity Framework Contrib</title><link>http://www.codeplex.com/efcontrib/Project/ProjectRss.aspx</link><description>This project is a home to contributions for the Entity Framework in order to accomodate different scenario&amp;#39;s and programming styles.    It consists of multiple projects aimed at helping you take full...</description><item><title>New Post: PostSharp4FE is not working with VS2008 SP1 Beta</title><link>http://www.codeplex.com/efcontrib/Thread/View.aspx?ThreadId=29564</link><description>&lt;div style="line-height: normal;"&gt;Hi Kesav,&lt;br&gt;
&lt;br&gt;
yes. However, there is a holiday coming up soon, so I do not know when I will get this done.&lt;br&gt;
&lt;br&gt;
I'm dedicated to bring EF to Silverlight. So I will start work on it as soon as I'm back.&lt;br&gt;
&lt;br&gt;
The error you are showing does not necessarily have anything to do with SP1 beta though. It seems you are not passing the correct parameters. Did it work correctly before?
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Sat, 14 Jun 2008 01:12:30 GMT</pubDate><guid isPermaLink="false">New Post: PostSharp4FE is not working with VS2008 SP1 Beta 20080614011230A</guid></item><item><title>New Post: PostSharp4FE is not working with VS2008 SP1 Beta</title><link>http://www.codeplex.com/efcontrib/Thread/View.aspx?ThreadId=29564</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I just downloaded the latest postsharp4fe and tried to work with VS2008 SP1Beta things are not working.&amp;nbsp; Initally I had compilation errors for PostSharp4FE project I could fix the API that got changed in the recent SP1.&amp;nbsp; Now I could compile all the projects of PostSharp4FE and could generate the dlls.&lt;/p&gt;
&lt;p&gt;Now I created my own domain object class library project and setup the csproj and psproj files to use PostSharp4FE: The project build itself was failing.&amp;nbsp; I ran the PostSharp.exe command from command line and got the following exception:&lt;/p&gt;
&lt;p&gt;System.NullReferenceException: Object reference not set to an instance of an object.&lt;br&gt;
&amp;nbsp;&amp;nbsp; at EntityFrameworkContrib.PostSharp4EF.PocoAttribute.GetMetaDataWorkspace(String assemblyLocation) in c:\Software\efcontrib\EFContrib.Pos&lt;br&gt;
tSharp4EF\EntityFrameworkContrib.PostSharp4EF.Public\PocoAttribute.cs:line 246&lt;br&gt;
&amp;nbsp;&amp;nbsp; at EntityFrameworkContrib.PostSharp4EF.PocoAttribute.ProvideAspects(Object element, LaosReflectionAspectCollection collection) in c:\Soft&lt;br&gt;
ware\efcontrib\EFContrib.PostSharp4EF\EntityFrameworkContrib.PostSharp4EF.Public\PocoAttribute.cs:line 112&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Laos.CompoundAspect.PostSharp.Laos.ILaosReflectionAspectProvider.ProvideAspects(LaosReflectionAspectCollection collection) i&lt;br&gt;
n p:\branches\1.0\Laos\PostSharp.Laos\CompoundAspect.cs:line 62&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Laos.Weaver.LaosTask.EnqueueAspects(ILaosReflectionAspectProvider provider) in p:\branches\1.0\Laos\PostSharp.Laos.Weaver\La&lt;br&gt;
osTask.cs:line 196&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Laos.Weaver.LaosTask.Execute() in p:\branches\1.0\Laos\PostSharp.Laos.Weaver\LaosTask.cs:line 411&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Extensibility.Project.ExecutePhase(String phase) in p:\branches\1.0\Core\PostSharp.Core\Extensibility\Project.cs:line 1044&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Extensibility.Project.Execute() in p:\branches\1.0\Core\PostSharp.Core\Extensibility\Project.cs:line 1082&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Extensibility.PostSharpObject.ExecuteProjects() in p:\branches\1.0\Core\PostSharp.Core\Extensibility\PostSharpObject.cs:line&lt;br&gt;
&amp;nbsp;581&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Extensibility.PostSharpObject.InvokeProjects(ProjectInvocation[] projectInvocations) in p:\branches\1.0\Core\PostSharp.Core\&lt;br&gt;
Extensibility\PostSharpObject.cs:line 564&lt;br&gt;
&amp;nbsp;&amp;nbsp; at PostSharp.Console.Program.InternalMain(String[] args) in p:\branches\1.0\Core\PostSharp.Console\Program.cs:line 301&lt;/p&gt;
&lt;p&gt;Is there any plan for updating the code to work with SP1 Beta?&lt;/p&gt;
&lt;p&gt;Thanks&lt;br&gt;
-kesav&lt;/p&gt;
&lt;/div&gt;</description><author>kesav</author><pubDate>Thu, 12 Jun 2008 21:17:49 GMT</pubDate><guid isPermaLink="false">New Post: PostSharp4FE is not working with VS2008 SP1 Beta 20080612091749P</guid></item><item><title>Created Issue: efcontrib is not compatible with VS2008 SP1 Beta</title><link>http://www.codeplex.com/efcontrib/WorkItem/View.aspx?WorkItemId=5302</link><description>Hi&lt;br /&gt;&lt;br /&gt;I just downloaded the latest postsharp4fe and tried to work with VS2008 SP1Beta things are not working.  Initally I had compilation errors for PostSharp4FE project I could fix the API that got changed in the recent SP1.  Now I could compile all the projects of PostSharp4FE and could generate the dlls.&lt;br /&gt;&lt;br /&gt;Now I created my own domain object class library project and setup the csproj and psproj files to use PostSharp4FE&amp;#58; The project build itself was failing.  I ran the PostSharp.exe command from command line and got the following exception&amp;#58;&lt;br /&gt;&lt;br /&gt;System.NullReferenceException&amp;#58; Object reference not set to an instance of an object.&lt;br /&gt;   at EntityFrameworkContrib.PostSharp4EF.PocoAttribute.GetMetaDataWorkspace&amp;#40;String assemblyLocation&amp;#41; in c&amp;#58;&amp;#92;Software&amp;#92;efcontrib&amp;#92;EFContrib.Pos&lt;br /&gt;tSharp4EF&amp;#92;EntityFrameworkContrib.PostSharp4EF.Public&amp;#92;PocoAttribute.cs&amp;#58;line 246&lt;br /&gt;   at EntityFrameworkContrib.PostSharp4EF.PocoAttribute.ProvideAspects&amp;#40;Object element, LaosReflectionAspectCollection collection&amp;#41; in c&amp;#58;&amp;#92;Soft&lt;br /&gt;ware&amp;#92;efcontrib&amp;#92;EFContrib.PostSharp4EF&amp;#92;EntityFrameworkContrib.PostSharp4EF.Public&amp;#92;PocoAttribute.cs&amp;#58;line 112&lt;br /&gt;   at PostSharp.Laos.CompoundAspect.PostSharp.Laos.ILaosReflectionAspectProvider.ProvideAspects&amp;#40;LaosReflectionAspectCollection collection&amp;#41; i&lt;br /&gt;n p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Laos&amp;#92;PostSharp.Laos&amp;#92;CompoundAspect.cs&amp;#58;line 62&lt;br /&gt;   at PostSharp.Laos.Weaver.LaosTask.EnqueueAspects&amp;#40;ILaosReflectionAspectProvider provider&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Laos&amp;#92;PostSharp.Laos.Weaver&amp;#92;La&lt;br /&gt;osTask.cs&amp;#58;line 196&lt;br /&gt;   at PostSharp.Laos.Weaver.LaosTask.Execute&amp;#40;&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Laos&amp;#92;PostSharp.Laos.Weaver&amp;#92;LaosTask.cs&amp;#58;line 411&lt;br /&gt;   at PostSharp.Extensibility.Project.ExecutePhase&amp;#40;String phase&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Core&amp;#92;PostSharp.Core&amp;#92;Extensibility&amp;#92;Project.cs&amp;#58;line 1044&lt;br /&gt;   at PostSharp.Extensibility.Project.Execute&amp;#40;&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Core&amp;#92;PostSharp.Core&amp;#92;Extensibility&amp;#92;Project.cs&amp;#58;line 1082&lt;br /&gt;   at PostSharp.Extensibility.PostSharpObject.ExecuteProjects&amp;#40;&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Core&amp;#92;PostSharp.Core&amp;#92;Extensibility&amp;#92;PostSharpObject.cs&amp;#58;line&lt;br /&gt; 581&lt;br /&gt;   at PostSharp.Extensibility.PostSharpObject.InvokeProjects&amp;#40;ProjectInvocation&amp;#91;&amp;#93; projectInvocations&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Core&amp;#92;PostSharp.Core&amp;#92;&lt;br /&gt;Extensibility&amp;#92;PostSharpObject.cs&amp;#58;line 564&lt;br /&gt;   at PostSharp.Console.Program.InternalMain&amp;#40;String&amp;#91;&amp;#93; args&amp;#41; in p&amp;#58;&amp;#92;branches&amp;#92;1.0&amp;#92;Core&amp;#92;PostSharp.Console&amp;#92;Program.cs&amp;#58;line 301&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Is there any plan for updating the code to work with SP1 Beta&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;-kesav&lt;br /&gt;</description><author>kesav</author><pubDate>Thu, 12 Jun 2008 21:15:57 GMT</pubDate><guid isPermaLink="false">Created Issue: efcontrib is not compatible with VS2008 SP1 Beta 20080612091557P</guid></item><item><title>NEW POST: Screencast</title><link>http://www.codeplex.com/efcontrib/Thread/View.aspx?ThreadId=27591</link><description>&lt;div style="line-height: normal;"&gt;yes, sorry. The screencast was actually created, but because there was a new version of EF coming out which possibly solves the serialization issue, I decided not to publish it&lt;br&gt;
&lt;br&gt;
LinqToSql serialization: yes, certainly. However, at this point I use an extensibility point of WCF that is not supported in Silverlight. Again, look at the new version of EF and WCF to see if there are better possibilities.&lt;br&gt;
&lt;br&gt;
I'm going to start work on it pretty soon, and hope to enable EF on SL for sure.&lt;br&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Tue, 27 May 2008 10:55:04 GMT</pubDate><guid isPermaLink="false">NEW POST: Screencast 20080527105504A</guid></item><item><title>NEW POST: Screencast</title><link>http://www.codeplex.com/efcontrib/Thread/View.aspx?ThreadId=27591</link><description>&lt;div style="line-height: normal;"&gt;I saw a mention about a screencast. Is there any screencast of how to use this library?&lt;br&gt;
&lt;br&gt;
Also could the same problem with LINQ to SQL circular reference serialization be solved via your library? We are having the exact same issues with circular reference serialization when using LINQ to SQL exposed via WCF for Silverlight 2 applications.
&lt;/div&gt;</description><author>Synced</author><pubDate>Mon, 12 May 2008 23:10:45 GMT</pubDate><guid isPermaLink="false">NEW POST: Screencast 20080512111045P</guid></item><item><title>CREATED RELEASE: PostSharp4EF drop 18-4-2008 (apr 18, 2008)</title><link>http://www.codeplex.com/efcontrib/Release/ProjectReleases.aspx?ReleaseId=12687</link><description>&amp;#42;Disclaimer&amp;#58; This is the first public beta. I still expect some major changes to occur and many bugs to be found. Use with caution &amp;#59;-&amp;#41;&amp;#42;&lt;br /&gt;&lt;br /&gt;This drop belongs to changeset 16806. You can either download the complete sourcetrunk &amp;#91;url&amp;#58;http&amp;#58;&amp;#47;&amp;#47;www.codeplex.com&amp;#47;efcontrib&amp;#47;SourceControl&amp;#47;DownloadSourceCode.aspx&amp;#63;changeSetId&amp;#61;16806&amp;#93; or download the zipped version which only includes PostSharp4EF source.&lt;br /&gt;&lt;br /&gt;This release supports&amp;#58;&lt;br /&gt;&amp;#42; POCO classes with EF&lt;br /&gt;&amp;#42; inheritance&lt;br /&gt;&amp;#42; complex types&lt;br /&gt;&amp;#42; serialization&amp;#47;deserialization&lt;br /&gt;&amp;#42; client side changetracking &amp;#40;without EF&amp;#41; and serverside attaching&lt;br /&gt;&lt;br /&gt;A screencap was created to demonstrate how to use.&lt;br /&gt;&lt;br /&gt;Please leave your comments and bug reports&amp;#58; &amp;#91;url&amp;#58;http&amp;#58;&amp;#47;&amp;#47;www.codeplex.com&amp;#47;efcontrib&amp;#47;Thread&amp;#47;List.aspx&amp;#93;&lt;br /&gt;&lt;br /&gt;</description><author></author><pubDate>Fri, 18 Apr 2008 12:38:07 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: PostSharp4EF drop 18-4-2008 (apr 18, 2008) 20080418123807P</guid></item><item><title>UPDATED WIKI: full disconnected n-tier usage</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full disconnected n-tier usage&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Disconnected n-tier usage of Entity Framework objects
&lt;/h1&gt; &lt;br /&gt;To enable the use of Entity Framework objects in a disconnected scenario, we use 3 projects together:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;PostSharp4EF&lt;/a&gt;: enhances Plain Old Code Objects to be understood by Entity Framework&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;Circular Serializer&lt;/a&gt;: serializes graphs of objects and takes care of original values&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;Editable Business Objects&lt;/a&gt;: enhances Plain Old Code Objects to manage original values&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;Read more here: &lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and here: &lt;a href="http://www.sitechno.com/Blog/NewSampleApplicationForDisconnectedNtierEntityFrameworkObjects.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/NewSampleApplicationForDisconnectedNtierEntityFrameworkObjects.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;What we need to achieve is work from one domain layer, but create two versions of it. This is not done in source, but by enhancing the dll.&lt;br /&gt;&lt;b&gt;Client side&lt;/b&gt;: use Circular Serializer and Editable Business Objects&lt;br /&gt;&lt;b&gt;Server side&lt;/b&gt;: use Circular Serializer and PostSharp4EF&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=efcontrib&amp;amp;DownloadId=32500" alt="ntier.png" /&gt;&lt;br /&gt; &lt;br /&gt;The end result would be two solutions (one for the client, one for the server) that both reference the same Domain project (which holds your business objects). When compiling, the correct enhancements need to be executed.&lt;br /&gt; &lt;br /&gt;&lt;i&gt;please note that all these steps are simplified when using TFS or nAnt to manage builds where more control is possible&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Step 1: get a conditional compilation symbol&lt;/b&gt; &lt;br /&gt;Open the proj file of your domain project. Add the following code to it:&lt;br /&gt;&lt;pre&gt;
   
&amp;lt;PropertyGroup&amp;gt;
       &amp;lt;DefineConstants&amp;gt;$(DefineConstants);$(SolutionName)&amp;lt;/DefineConstants&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;
&lt;/pre&gt; &lt;br /&gt;This will set your normal constants, but add the solution name to it. As an alternative, you might want to use a &amp;lt;Choose&amp;gt; group and create more elaborate schemes of determining in what context this project is loaded.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Step 2: use conditional attributes&lt;/b&gt;&lt;br /&gt;I like to leave my domain objects completely clean, and so I put my enhancement attributes in the assembly info of my Domain project. &lt;br /&gt;The following example is based on solutionnames 'Server' and 'Client'.&lt;br /&gt;&lt;pre&gt;
#if Server
[assembly: Poco(&amp;quot;InheritanceTypeConnection&amp;quot;, AttributeTargetAssemblies = &amp;quot;Domain&amp;quot;, AttributeTargetTypes = &amp;quot;Domain.*&amp;quot;)]
[assembly: CreateSerializeSurrogate(&amp;quot;EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF&amp;quot;, 
AttributeTargetAssemblies = &amp;quot;Domain&amp;quot;, AttributeTargetTypes = &amp;quot;Domain.*&amp;quot;)]
#endif
#if Client
[assembly: EditableBusinessObjectAttribute(AttributeTargetAssemblies=&amp;quot;Domain&amp;quot;, AttributeTargetTypes=&amp;quot;Domain.*&amp;quot;)]
[assembly: CreateSerializeSurrogate(&amp;quot;EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, 
EditableBusinessObjects.Postsharp.Public&amp;quot;, AttributeTargetAssemblies=&amp;quot;Domain&amp;quot;, AttributeTargetTypes=&amp;quot;Domain.*&amp;quot;)]
#endif
&lt;/pre&gt; &lt;br /&gt;We instruct PostSharp to enhance all objects starting with namespace Domain, in assembly Domain to either use Poco and CircularSerializer or EditableBusinessObjects and CircularSerializer.&lt;br /&gt; &lt;br /&gt;(optional) &lt;b&gt;Step 3: Create different configurations so that Domain does not get overwritten&lt;/b&gt;&lt;br /&gt;When compiling your solution, the Domain.dll is placed in either Debug or Release folder. However, you are very likely to compile both the client and server solution at the same time. It might be prudent to create a new configuration so that Domain gets placed in different folders. &lt;br /&gt;In the end, the only thing that is important, is the dll that is copied to either the client project or the server project.&lt;br /&gt; &lt;br /&gt;Please take a look at the client/server samples that are included with the source code.&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 19:53:53 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: full disconnected n-tier usage 20080416075353P</guid></item><item><title>UPDATED WIKI: full disconnected n-tier usage</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full disconnected n-tier usage&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Disconnected n-tier usage of Entity Framework objects
&lt;/h1&gt; &lt;br /&gt;To enable the use of Entity Framework objects in a disconnected scenario, we use 3 projects together:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;PostSharp4EF&lt;/a&gt;: enhances Plain Old Code Objects to be understood by Entity Framework&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;Circular Serializer&lt;/a&gt;: serializes graphs of objects and takes care of original values&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;Editable Business Objects&lt;/a&gt;: enhances Plain Old Code Objects to manage original values&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;Read more here: &lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and here: &lt;a href="http://www.sitechno.com/Blog/NewSampleApplicationForDisconnectedNtierEntityFrameworkObjects.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/NewSampleApplicationForDisconnectedNtierEntityFrameworkObjects.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;What we need to achieve is work from one domain layer, but create two versions of it. This is not done in source, but by enhancing the dll.&lt;br /&gt;&lt;b&gt;Client side&lt;/b&gt;: use Circular Serializer and Editable Business Objects&lt;br /&gt;&lt;b&gt;Server side&lt;/b&gt;: use Circular Serializer and PostSharp4EF&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=efcontrib&amp;amp;DownloadId=32500" alt="ntier.png" /&gt;&lt;br /&gt; &lt;br /&gt;The end result would be two solutions (one for the client, one for the server) that both reference the same Domain project (which holds your business objects). When compiling, the correct enhancements need to be executed.&lt;br /&gt; &lt;br /&gt;&lt;i&gt;please note that all these steps are simplified when using TFS or nAnt to manage builds where more control is possible&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Step 1: get a conditional compilation symbol&lt;/b&gt; &lt;br /&gt;Open the proj file of your domain project. Add the following code to it:&lt;br /&gt;&lt;pre&gt;
   
&amp;lt;PropertyGroup&amp;gt;
       &amp;lt;DefineConstants&amp;gt;$(DefineConstants);$(SolutionName)&amp;lt;/DefineConstants&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;
&lt;/pre&gt; &lt;br /&gt;This will set your normal constants, but add the solution name to it. As an alternative, you might want to use a &amp;lt;Choose&amp;gt; group and create more elaborate schemes of determining in what context this project is loaded.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Step 2: use conditional attributes&lt;/b&gt;&lt;br /&gt;I like to leave my domain objects completely clean, and so I put my enhancement attributes in the assembly info of my Domain project. &lt;br /&gt;The following example is based on solutionnames 'Server' and 'Client'.&lt;br /&gt;&lt;pre&gt;
#if Server
[assembly: Poco(&amp;quot;InheritanceTypeConnection&amp;quot;, AttributeTargetAssemblies = &amp;quot;Domain&amp;quot;, AttributeTargetTypes = &amp;quot;Domain.*&amp;quot;)]
[assembly: CreateSerializeSurrogate(&amp;quot;EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF&amp;quot;, AttributeTargetAssemblies = &amp;quot;Domain&amp;quot;, AttributeTargetTypes = &amp;quot;Domain.*&amp;quot;)]
#endif
#if Client
[assembly: EditableBusinessObjectAttribute(AttributeTargetAssemblies=&amp;quot;Domain&amp;quot;, AttributeTargetTypes=&amp;quot;Domain.*&amp;quot;)]
[assembly: CreateSerializeSurrogate(&amp;quot;EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public&amp;quot;, AttributeTargetAssemblies=&amp;quot;Domain&amp;quot;, AttributeTargetTypes=&amp;quot;Domain.*&amp;quot;)]
#endif
&lt;/pre&gt; &lt;br /&gt;We instruct PostSharp to enhance all objects starting with namespace Domain, in assembly Domain to either use Poco and CircularSerializer or EditableBusinessObjects and CircularSerializer.&lt;br /&gt; &lt;br /&gt;(optional) &lt;b&gt;Step 3: Create different configurations so that Domain does not get overwritten&lt;/b&gt;&lt;br /&gt;When compiling your solution, the Domain.dll is placed in either Debug or Release folder. However, you are very likely to compile both the client and server solution at the same time. It might be prudent to create a new configuration so that Domain gets placed in different folders. &lt;br /&gt;In the end, the only thing that is important, is the dll that is copied to either the client project or the server project.&lt;br /&gt; &lt;br /&gt;Please take a look at the client/server samples that are included with the source code.&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 19:52:57 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: full disconnected n-tier usage 20080416075257P</guid></item><item><title>UPDATED WIKI: full disconnected n-tier usage</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full disconnected n-tier usage&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Disconnected n-tier usage of Entity Framework objects
&lt;/h1&gt; &lt;br /&gt;To enable the use of Entity Framework objects in a disconnected scenario, we use 3 projects together:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;PostSharp4EF&lt;/a&gt;: enhances Plain Old Code Objects to be understood by Entity Framework&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;Circular Serializer&lt;/a&gt;: serializes graphs of objects and takes care of original values&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=full%20disconnected%20n-tier%20usage"&gt;Editable Business Objects&lt;/a&gt;: enhances Plain Old Code Objects to manage original values&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;Read more here: &lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and here: &lt;a href="http://www.sitechno.com/Blog/NewSampleApplicationForDisconnectedNtierEntityFrameworkObjects.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/NewSampleApplicationForDisconnectedNtierEntityFrameworkObjects.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;What we need to achieve is work from one domain layer, but create two versions of it. This is not done in source, but by enhancing the dll.&lt;br /&gt;&lt;b&gt;Client side&lt;/b&gt;: use Circular Serializer and Editable Business Objects&lt;br /&gt;&lt;b&gt;Server side&lt;/b&gt;: use Circular Serializer and PostSharp4EF&lt;br /&gt; &lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve link: &lt;/span&gt;[image:http://www.sitechno.com/Blog/content/binary/WindowsLiveWriter/DisconnectedNTierobjectsusingEntityFrame_12D68/image_2.png]&lt;br /&gt; &lt;br /&gt;The end result would be two solutions (one for the client, one for the server) that both reference the same Domain project (which holds your business objects). When compiling, the correct enhancements need to be executed.&lt;br /&gt; &lt;br /&gt;&lt;i&gt;please note that all these steps are simplified when using TFS or nAnt to manage builds where more control is possible&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Step 1: get a conditional compilation symbol&lt;/b&gt; &lt;br /&gt;Open the proj file of your domain project. Add the following code to it:&lt;br /&gt;&lt;pre&gt;
   
&amp;lt;PropertyGroup&amp;gt;
       &amp;lt;DefineConstants&amp;gt;$(DefineConstants);$(SolutionName)&amp;lt;/DefineConstants&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;
&lt;/pre&gt; &lt;br /&gt;This will set your normal constants, but add the solution name to it. As an alternative, you might want to use a &amp;lt;Choose&amp;gt; group and create more elaborate schemes of determining in what context this project is loaded.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Step 2: use conditional attributes&lt;/b&gt;&lt;br /&gt;I like to leave my domain objects completely clean, and so I put my enhancement attributes in the assembly info of my Domain project. &lt;br /&gt;The following example is based on solutionnames 'Server' and 'Client'.&lt;br /&gt;&lt;pre&gt;
#if Server
[assembly: Poco(&amp;quot;InheritanceTypeConnection&amp;quot;, AttributeTargetAssemblies = &amp;quot;Domain&amp;quot;, AttributeTargetTypes = &amp;quot;Domain.*&amp;quot;)]
[assembly: CreateSerializeSurrogate(&amp;quot;EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF&amp;quot;, AttributeTargetAssemblies = &amp;quot;Domain&amp;quot;, AttributeTargetTypes = &amp;quot;Domain.*&amp;quot;)]
#endif
#if Client
[assembly: EditableBusinessObjectAttribute(AttributeTargetAssemblies=&amp;quot;Domain&amp;quot;, AttributeTargetTypes=&amp;quot;Domain.*&amp;quot;)]
[assembly: CreateSerializeSurrogate(&amp;quot;EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public&amp;quot;, AttributeTargetAssemblies=&amp;quot;Domain&amp;quot;, AttributeTargetTypes=&amp;quot;Domain.*&amp;quot;)]
#endif
&lt;/pre&gt; &lt;br /&gt;We instruct PostSharp to enhance all objects starting with namespace Domain, in assembly Domain to either use Poco and CircularSerializer or EditableBusinessObjects and CircularSerializer.&lt;br /&gt; &lt;br /&gt;(optional) &lt;b&gt;Step 3: Create different configurations so that Domain does not get overwritten&lt;/b&gt;&lt;br /&gt;When compiling your solution, the Domain.dll is placed in either Debug or Release folder. However, you are very likely to compile both the client and server solution at the same time. It might be prudent to create a new configuration so that Domain gets placed in different folders. &lt;br /&gt;In the end, the only thing that is important, is the dll that is copied to either the client project or the server project.&lt;br /&gt; &lt;br /&gt;Please take a look at the client/server samples that are included with the source code.&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 19:50:42 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: full disconnected n-tier usage 20080416075042P</guid></item><item><title>UPDATED WIKI: Editable Business Objects</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable Business Objects&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Editable Business Objects
&lt;/h2&gt; &lt;br /&gt;The Editable Business Objects (EBO) enhancements has two objectives:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Implement IEditableObject&lt;/li&gt;&lt;li&gt;Keep originalvalues so that they can be delivered to the &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=Editable%20Business%20Objects"&gt;Circular Serializer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;The project works together with 2 other projects (also included): &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=Editable%20Business%20Objects"&gt;Circular Serializer&lt;/a&gt; and &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=Editable%20Business%20Objects"&gt;PostSharp4EF&lt;/a&gt;. Together they offer effortless n-tier distributed usage of your domain layer, arguably the most important layer of your application. Read more about this here: &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full%20disconnected%20n-tier%20usage&amp;amp;referringTitle=Editable%20Business%20Objects"&gt;full disconnected n-tier usage&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;EBO is meant as a purely client side enhancement for objects. &lt;br /&gt;More can be read here: &lt;a href="http://www.sitechno.com/Blog/AddingEditSupportToBusinessobjects.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/AddingEditSupportToBusinessobjects.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and here: &lt;a href="//http://www.sitechno.com/Blog/SneakPreviewSerializingObjectsWithOriginalValues.aspx" class="externalLink"&gt;//http://www.sitechno.com/Blog/SneakPreviewSerializingObjectsWithOriginalValues.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Given a simple Person object:&lt;br /&gt;&lt;pre&gt;
    [DataContract(Namespace = &amp;quot;myNamespace&amp;quot;, Name = &amp;quot;Person&amp;quot;)]
    public class Person
    {
        [DataMember]
        public int PersonID { get; set; }
        [DataMember]
        public string Firstname { get; set; }
        [DataMember]
        public string Lastname { get; set; }
    }
&lt;/pre&gt; &lt;br /&gt;We can enhance this object by adding this attribute to it:&lt;br /&gt;&lt;span class="codeInline"&gt; [EditableBusinessObjectAttribute()] &lt;/span&gt;&lt;br /&gt; &lt;br /&gt;This triggers the following actions:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Implement the IEditableObject interface, which gives BeginEdit, CancelEdit and AcceptEdit methods&lt;/li&gt;&lt;li&gt;Rewrite all access to fields to pass through a method that will decide if a backup is necessary (when beginedit was called)&lt;/li&gt;&lt;li&gt;At canceledit, backups will be restored&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;In addition the following capabilities are added:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;A dictionary for 'original values'&lt;/li&gt;&lt;li&gt;Allow straight access to the 'original values' that is used by the &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=Editable%20Business%20Objects"&gt;Circular Serializer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;u&gt;It is important to understand that this is never visible in Visual Studio. Your code remains untouched. The resulting dll is enhanced with these features&lt;/u&gt;&lt;br /&gt; &lt;br /&gt;To use it's features, we can cast the object to IEditableObject and call the exposed methods.&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 19:24:42 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Editable Business Objects 20080416072442P</guid></item><item><title>UPDATED WIKI: Circular Serializer</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular Serializer&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Circular Serializer
&lt;/h1&gt; &lt;br /&gt;The circular serializer has two objectives:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Allow for serializing graphs of objects that might have relations to eachother. In other words: solve the circular reference problem&lt;/li&gt;&lt;li&gt;Work together with &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=Circular%20Serializer"&gt;PostSharp4EF&lt;/a&gt; and &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=Circular%20Serializer"&gt;Editable Business Objects&lt;/a&gt; to serialize 'original values'. This way, change tracking is possible on all clients and efficient attaching to EF contexts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Serializing graphs
&lt;/h2&gt;A more detailed look at this is available here &lt;a href="http://www.sitechno.com/Blog/CircularReferencesWithWCFSolvedADifferentWay.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/CircularReferencesWithWCFSolvedADifferentWay.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and here &lt;a href="http://www.sitechno.com/Blog/RevisitingSerializingCircularReferencesKeepingContextDuringDeserialization.aspx" class="externalLink"&gt;http://www.sitechno.com/Blog/RevisitingSerializingCircularReferencesKeepingContextDuringDeserialization.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Given a domain object Employee:&lt;br /&gt;&lt;pre&gt;
    [DataContract(Namespace = &amp;quot;myNamespace&amp;quot;, Name = &amp;quot;Employee&amp;quot;)]
    public class Employee : Person
    {
        [DataMember]
        public ICollection&amp;lt;Employee&amp;gt; TeamMembers { get; set; }
 
        [DataMember]
        public Employee TeamLeader { get; set; }
    }
&lt;/pre&gt;When serializing this object using WCF with anything other than the nettcp binding, you might run into a stackoverflow. This is caused by a circular reference between employees: EmployeeA has a collection of teamMembers that contain EmployeeB, while EmployeeB has point to EmployeeA through it's TeamLeader reference. WCF can not serialize this relationship.&lt;br /&gt;It is possible to set a switch on the DataContractSerializer that will enable a custom serializing scheme which might look like this:&lt;br /&gt;&lt;pre&gt;
&amp;lt;Person xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; z:Id=&amp;quot;1&amp;quot; xmlns:z=&amp;quot;http://schemas.microsoft.com/2003/10/Serialization/&amp;quot; xmlns=&amp;quot;myNamespace&amp;quot;&amp;gt;
    &amp;lt;FieldedNumbers xmlns:d2p1=&amp;quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&amp;quot; z:Id=&amp;quot;2&amp;quot; z:Size=&amp;quot;2&amp;quot;&amp;gt;
        &amp;lt;d2p1:int&amp;gt;12&amp;lt;/d2p1:int&amp;gt;
        &amp;lt;d2p1:int&amp;gt;24&amp;lt;/d2p1:int&amp;gt;
    &amp;lt;/FieldedNumbers&amp;gt;
    &amp;lt;FirstName z:Id=&amp;quot;3&amp;quot;&amp;gt;Ruurd&amp;lt;/FirstName&amp;gt;
    &amp;lt;LastName z:Id=&amp;quot;4&amp;quot;&amp;gt;Boeke&amp;lt;/LastName&amp;gt;
    &amp;lt;Numbers xmlns:d2p1=&amp;quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&amp;quot; z:Id=&amp;quot;5&amp;quot; z:Size=&amp;quot;2&amp;quot;&amp;gt;
        &amp;lt;d2p1:int&amp;gt;31&amp;lt;/d2p1:int&amp;gt;
        &amp;lt;d2p1:int&amp;gt;29&amp;lt;/d2p1:int&amp;gt;
    &amp;lt;/Numbers&amp;gt;
    &amp;lt;Orders z:Id=&amp;quot;6&amp;quot; z:Size=&amp;quot;2&amp;quot;&amp;gt;
        &amp;lt;Order z:Id=&amp;quot;7&amp;quot;&amp;gt;
            &amp;lt;Amount&amp;gt;12&amp;lt;/Amount&amp;gt;
            &amp;lt;Customer z:Ref=&amp;quot;1&amp;quot; i:nil=&amp;quot;true&amp;quot; /&amp;gt;
            &amp;lt;OrderID&amp;gt;12&amp;lt;/OrderID&amp;gt;
            &amp;lt;ProductID&amp;gt;19&amp;lt;/ProductID&amp;gt;
        &amp;lt;/Order&amp;gt;
        &amp;lt;Order z:Id=&amp;quot;8&amp;quot;&amp;gt;
            &amp;lt;Amount&amp;gt;12&amp;lt;/Amount&amp;gt;
            &amp;lt;Customer z:Ref=&amp;quot;1&amp;quot; i:nil=&amp;quot;true&amp;quot; /&amp;gt;
            &amp;lt;OrderID&amp;gt;13&amp;lt;/OrderID&amp;gt;
            &amp;lt;ProductID&amp;gt;255&amp;lt;/ProductID&amp;gt;
        &amp;lt;/Order&amp;gt;
    &amp;lt;/Orders&amp;gt;
    &amp;lt;PersonID&amp;gt;23&amp;lt;/PersonID&amp;gt;
    &amp;lt;Something&amp;gt;666&amp;lt;/Something&amp;gt;
&amp;lt;/Person&amp;gt;
&lt;/pre&gt;Here you can see the z:ID and z:Ref attributes placed on the graph. This is not interoperable. &lt;br /&gt; &lt;br /&gt;By placing a simple attribute on your class:&lt;br /&gt;&lt;span class="codeInline"&gt;[CreateSerializeSurrogate(&amp;quot;EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public&amp;quot;)]&lt;/span&gt;&lt;br /&gt;this problem can be fixed.&lt;br /&gt; &lt;br /&gt;The attribute triggers the following changes:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Create a surrogate class that has all the same datamembers as the original class&lt;/li&gt;&lt;li&gt;Create a constructor that will check a List&amp;lt;object&amp;gt; to see if the object was already serialized.&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;If not: all properties are copied&lt;/li&gt;&lt;li&gt;If so: only an ID is set&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Create a method inside the original type, that will copy all information from the surrogate to itself (no reflection is used)&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;u&gt;It is important to understand that this is never visible in Visual Studio. Your code remains untouched. The resulting dll is enhanced with these features&lt;/u&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Example
&lt;/h2&gt;Using reflector we can take a look at the Person class:&lt;br /&gt;&lt;pre&gt;
[EdmEntityType(Name=&amp;quot;Person&amp;quot;, NamespaceName=&amp;quot;Domain&amp;quot;)]
public class Person : IPocoFacade, IComposed&amp;lt;IPocoFacade&amp;gt;, IUpdateComplexTypesWithTracker, IStorageAccess, IRelationshipLoader, ISerializationHelp
{
 
.... members left out ...
 
    // Methods
    static Person();
    public Person();
    public void CopyDataFromSurrogate(PersonSurrogate surrogate);
 
    // Nested Types
    [DataContract(Name=&amp;quot;Person&amp;quot;, Namespace=&amp;quot;myNamespace&amp;quot;)]
    private class PersonSurrogate
    {
        // Fields
        [DataMember(EmitDefaultValue=false)]
        public string Firstname;
        [DataMember(EmitDefaultValue=false)]
        public string Lastname;
        [DataMember(EmitDefaultValue=false, Order=0x63)]
        public string OriginalValue_Firstname;
        [DataMember(EmitDefaultValue=false, Order=0x63)]
        public string OriginalValue_Lastname;
        [DataMember(EmitDefaultValue=false, Order=0x63)]
        public int OriginalValue_PersonID;
        [DataMember(EmitDefaultValue=false)]
        public int PersonID;
        [DataMember]
        public int SerializationID;
 
        // Methods
        public PersonSurrogate();
        public PersonSurrogate(Person source, List&amp;lt;object&amp;gt; graphList);
    }
&lt;/pre&gt; &lt;br /&gt;All this is done invisible to the developer. &lt;br /&gt;Now the datacontract serializer is able to serialize using the surrogates. The xml looks like:&lt;br /&gt;&lt;pre&gt;
&amp;lt;Person xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;myNamespace&amp;quot;&amp;gt;
       &amp;lt;FieldedNumbers xmlns:d2p1=&amp;quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&amp;quot;&amp;gt;  
           &amp;lt;d2p1:int&amp;gt;12&amp;lt;/d2p1:int&amp;gt;  
           &amp;lt;d2p1:int&amp;gt;24&amp;lt;/d2p1:int&amp;gt;  
       &amp;lt;/FieldedNumbers&amp;gt;  
       &amp;lt;FirstName&amp;gt;Ruurd&amp;lt;/FirstName&amp;gt;  
       &amp;lt;LastName&amp;gt;Boeke&amp;lt;/LastName&amp;gt;  
       &amp;lt;Numbers xmlns:d2p1=&amp;quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&amp;quot;&amp;gt;  
          &amp;lt;d2p1:int&amp;gt;31&amp;lt;/d2p1:int&amp;gt; 
           &amp;lt;d2p1:int&amp;gt;29&amp;lt;/d2p1:int&amp;gt; 
       &amp;lt;/Numbers&amp;gt; 
       &amp;lt;Orders&amp;gt; 
           &amp;lt;Order&amp;gt; 
               &amp;lt;Amount&amp;gt;12&amp;lt;/Amount&amp;gt; 
               &amp;lt;Customer&amp;gt; 
                   &amp;lt;SerializationID&amp;gt;0&amp;lt;/SerializationID&amp;gt; 
               &amp;lt;/Customer&amp;gt; 
               &amp;lt;OrderID&amp;gt;12&amp;lt;/OrderID&amp;gt; 
               &amp;lt;ProductID&amp;gt;19&amp;lt;/ProductID&amp;gt; 
               &amp;lt;SerializationID&amp;gt;1&amp;lt;/SerializationID&amp;gt; 
           &amp;lt;/Order&amp;gt; 
           &amp;lt;Order&amp;gt; 
               &amp;lt;Amount&amp;gt;12&amp;lt;/Amount&amp;gt; 
               &amp;lt;Customer&amp;gt; 
                   &amp;lt;SerializationID&amp;gt;0&amp;lt;/SerializationID&amp;gt; 
               &amp;lt;/Customer&amp;gt; 
               &amp;lt;OrderID&amp;gt;13&amp;lt;/OrderID&amp;gt; 
               &amp;lt;ProductID&amp;gt;255&amp;lt;/ProductID&amp;gt; 
               &amp;lt;SerializationID&amp;gt;2&amp;lt;/SerializationID&amp;gt; 
           &amp;lt;/Order&amp;gt; 
       &amp;lt;/Orders&amp;gt; 
       &amp;lt;PersonID&amp;gt;23&amp;lt;/PersonID&amp;gt; 
       &amp;lt;SerializationID&amp;gt;0&amp;lt;/SerializationID&amp;gt; 
       &amp;lt;Something&amp;gt;666&amp;lt;/Something&amp;gt;
  &amp;lt;/Person&amp;gt;
&lt;/pre&gt; &lt;br /&gt;A datacontractsurrogate is supplied and should be attached to the service with an attribute&lt;br /&gt;&lt;pre&gt;
    [CircularReferenceSurrogateAttribute]
    [ServiceContract(Namespace = &amp;quot;Http://sitechno.Employee&amp;quot;)]
    [ServiceKnownType(&amp;quot;GetKnownTypes&amp;quot;, typeof(KnownTypeHelper))]
    public interface IEmployeeService
    {
        [OperationContract]
        List&amp;lt;Employee&amp;gt; GetEmployees(string lastNameBeginsWith);
 
        [OperationContract]
        Person SavePerson(Person person);
 
        [OperationContract]
        Employee GetEmployee(int id);
    }
 
&lt;/pre&gt; &lt;br /&gt;This will trigger the datacontractserializer to use the surrogate while serializing and call the 'CopyDataFromSurrogate' method when deserializing.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Original Values
&lt;/h2&gt;The surrogate does not only have properties that match the parentType, but also creates properties that can be used to hold 'original values'.&lt;br /&gt;The surrogate will try to fetch these values according to the supplied interface:&lt;br /&gt;&lt;span class="codeInline"&gt;[CreateSerializeSurrogate(&amp;quot;EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public&amp;quot;)]&lt;/span&gt;&lt;br /&gt;Here, we are using the EditableBusinessObject interface. The surrogate will cast the parentType to this interface and call the 'GetOriginalValue' on it. This value will be placed in the originalvalue property that was created.&lt;br /&gt; &lt;br /&gt;Apart from &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=Circular%20Serializer"&gt;Editable Business Objects&lt;/a&gt;, the &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=Circular%20Serializer"&gt;PostSharp4EF&lt;/a&gt; can also be used as a supplier of original values:&lt;br /&gt;&lt;span class="codeInline"&gt;[CreateSerializeSurrogate(&amp;quot;EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF&amp;quot;)]&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;The editable business objects keeps the original values in a dictionary. The PostSharp4EF (Poco) enhancements actually creates properties on the parenttype and fills them when signalled to.&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 19:10:05 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Circular Serializer 20080416071005P</guid></item><item><title>UPDATED WIKI: PostSharp4EF</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
PostSharp4EF: Automatically implement IPoco interfaces
&lt;/h1&gt; &lt;br /&gt;&lt;i&gt;This project adds a compilation phase to your project. During that compilation phase, the metadata from your edmx file is used to alter the compiled code to actually implement all the requirements for a domain object to work with Entity Framework. This enables the developer to work with POCO (Plain Old Code Objects) objects that know nothing of the Entity Framework, in other words: they are Persistence Ignorant.&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;The project works together with 2 other projects (also included): &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=PostSharp4EF"&gt;Circular Serializer&lt;/a&gt; and &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=PostSharp4EF"&gt;Editable Business Objects&lt;/a&gt;. Together they offer effortless n-tier distributed usage of your domain layer, arguably the most important layer of your application. Read more about this here: &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full%20disconnected%20n-tier%20usage&amp;amp;referringTitle=PostSharp4EF"&gt;full disconnected n-tier usage&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Reason of existence
&lt;/h2&gt;In an agile design process, it is important to be able to work on a domain layer that is not weighed down by data access code. Ideally, one would like to be able to reuse the domain objects in other scenario's without having to make changes. Also, it should be simple to replace data-access code (for instance, to use another OR-mapper), without having to worry about how this affects the business layer.&lt;br /&gt;This means that no data-access logic should invade the domain layer at all. Business objects focus solely on implementing business logic and validation.&lt;br /&gt; &lt;br /&gt;The Entity Framework does not allow this in version 1. It does however present 3 interfaces (commonly known as the IPoco interfaces) that, when implemented, at least take away the need for a baseclass. The implementation of these interfaces is not easy and still invades the domain layer. &lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Example
&lt;/h2&gt;Let's start by creating a Person object:&lt;br /&gt;&lt;pre&gt;
    [DataContract(Namespace = &amp;quot;myNamespace&amp;quot;, Name = &amp;quot;Person&amp;quot;)]
    public class Person
    {
        [DataMember]
        public int PersonID { get; set; }
        [DataMember]
        public string Firstname { get; set; }
        [DataMember]
        public string Lastname { get; set; }
 
    }
&lt;/pre&gt; &lt;br /&gt;The next step is to add an attribute that will notify the postcompilation step to alter this object: &lt;br /&gt;&lt;span class="codeInline"&gt;[assembly: Poco(&amp;quot;InheritanceTypeConnection&amp;quot;)]&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;This will trigger the following actions:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;implementing IEntityWithChangeTracker, IEntityWithKey and IEntityWithRelationships. These are the IPoco interfaces that EF needs to work&lt;/li&gt;&lt;li&gt;put the EdmEntityType attribute on top of the class&lt;/li&gt;&lt;li&gt;put the EdmScalarProperty attributes on top of the properties&lt;/li&gt;&lt;li&gt;put EdmRelationShip attributes on the assembly (if needed)&lt;/li&gt;&lt;li&gt;put the EdmSchema attribute on the assembly&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;Then a few other interfaces are implemented, that are needed for the system to work.&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the IUpdateComplexTypesWithTracker interface is used to facilitate complex types&lt;/li&gt;&lt;li&gt;the IGetChangeTracker interface is used to get to the changetracker&lt;/li&gt;&lt;li&gt;the IContextAware interface can be used to &lt;i&gt;attach an object to the context&lt;/i&gt; (!) and &lt;i&gt;prepare it for serialization&lt;/i&gt; (!)&lt;/li&gt;&lt;li&gt;the IRelationshipLoader interface can be used to load relationships&lt;/li&gt;&lt;li&gt;the IStorageAccess and ISerializationHelp interfaces are used during serialization&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;Behind the scenes, access to relationships are rewritten to use the Relationshipmanager, and setters of properties are intercepted to raise the proper events.&lt;br /&gt; &lt;br /&gt;&lt;u&gt;It is important to understand that this is never visible in Visual Studio. Your code remains untouched. The resulting dll is enhanced with these features&lt;/u&gt;&lt;br /&gt; &lt;br /&gt;When we open the dll in reflector, we see the following:&lt;br /&gt;&lt;pre&gt;
[EdmEntityType(Name=&amp;quot;Person&amp;quot;, NamespaceName=&amp;quot;Domain&amp;quot;)]
public class Person : IPocoFacade, IComposed&amp;lt;IPocoFacade&amp;gt;, IUpdateComplexTypesWithTracker, IStorageAccess, IRelationshipLoader, ISerializationHelp
{
...... a lot of members left out .....
    // Properties
    [DataMember, EdmScalarProperty(IsNullable=false)]
    public string Firstname { get; set; }
    [DataMember, EdmScalarProperty(IsNullable=false)]
    public string Lastname { get; set; }
    [EdmScalarProperty(IsNullable=false, EntityKeyProperty=true), DataMember]
    public int PersonID { get; set; }
}
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
End result
&lt;/h2&gt;The end result is that you are able to work with regular objects, without thinking about Entity Framework. This enables an agile work process.&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 18:37:17 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: PostSharp4EF 20080416063717P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Home&amp;version=20</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Welcome to the Entity Framework Contrib project
&lt;/h1&gt;This project is a home to contributions for the Entity Framework in order to accomodate different scenario&amp;#39;s and programming styles. &lt;br /&gt;It consists of multiple projects aimed at helping you take full advantage of EF.
&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Projects
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF&amp;amp;referringTitle=Home"&gt;PostSharp4EF&lt;/a&gt;: Automatically implement IPoco&lt;/b&gt;   This project uses &lt;a href="http://www.postsharp.org/" class="externalLink"&gt;PostSharp&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to post-compile your assemblies. When it encounters a simple attribute, it will implement everything needed to use it in EF: Typelevel attributes, EDMscalar attributes, changetracking and default values. This means there are no runtime performance penalties. See &lt;a href="http://www.sitechno.com/Blog/IntroducingEntityFrameworkContribEasyIPocoImplementationV01.aspx" class="externalLink"&gt;Introducing EF Contrib post &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more detailed information about this project. The following supporting projects are included as well and will enable the use of &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full%20disconnected%20n-tier%20usage&amp;amp;referringTitle=Home"&gt;full disconnected n-tier usage&lt;/a&gt; of your domain objects:&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Serializer&amp;amp;referringTitle=Home"&gt;Circular Serializer&lt;/a&gt;&lt;/b&gt;: enables the serialization of object graphs (including circular references) with knowledge of 'original values'.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=Home"&gt;Editable Business Objects&lt;/a&gt;&lt;/b&gt;: does changetracking and provides the serializer with the correct values.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Plug-in Edmx Code Generator&lt;/b&gt;:  easily add assemblies that will hook into the codegeneration part of Entity Framework. &lt;a href="http://weblogs.asp.net/michaeld/archive/2008/02/25/plug-in-edmx-code-generator-released.aspx" class="externalLink"&gt;Check this blog post out for more info!&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Community feedback
&lt;/h2&gt;Please contribute to this project by either contributing code or giving feedback. Let me know if you are interested in the project and if you'd like to see it completed.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;div class="rss"&gt;
&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx"&gt;Disconnected N-Tier objects using EntityFramework&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, April 07, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/RelationSupportForNtierEF.aspx"&gt;Relation support for n-tier EF&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, March 27, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/ProgressOnLightObjectsOnTheClientFullBlownEFEntitiesOnTheBackend.aspx"&gt;Progress on light objects on the client, full blown EF entities on the backend&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, March 21, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/SneakPreviewSerializingObjectsWithOriginalValues.aspx"&gt;Sneak preview: serializing objects with original values&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, March 17, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/ComplexTypesInEFHowTheyWorkAndSupportInEFContrib.aspx"&gt;Complex types in EF, how they work and support in EFContrib&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, March 14, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/RelationshipSupportInEFContrib.aspx"&gt;Relationship support in EFContrib&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, March 10, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/PostcompilingForEntityFrameworkPartVI.aspx"&gt;Postcompiling for Entity Framework: Part VI&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, February 25, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/PostcompilingForEntityFrameworkPartV.aspx"&gt;Postcompiling for Entity Framework: Part V&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, February 22, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/DefaultValuesForEfcontrib.aspx"&gt;Default values for efcontrib&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, February 21, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/PostcompilingForEntityFrameworkPartIV.aspx"&gt;Postcompiling for Entity Framework: Part IV&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, February 21, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 14:41:34 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080416024134P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Home&amp;version=19</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Welcome to the Entity Framework Contrib project
&lt;/h1&gt;This project is a home to contributions for the Entity Framework in order to accomodate different scenario&amp;#39;s and programming styles. &lt;br /&gt;It consists of multiple projects aimed at helping you take full advantage of EF.
&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Projects
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=PostSharp4EF%3a%20Automatically%20implement%20IPoco&amp;amp;referringTitle=Home"&gt;PostSharp4EF: Automatically implement IPoco&lt;/a&gt;&lt;/b&gt;   This project uses &lt;a href="http://www.postsharp.org/" class="externalLink"&gt;PostSharp&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to post-compile your assemblies. When it encounters a simple attribute, it will implement everything needed to use it in EF: Typelevel attributes, EDMscalar attributes, changetracking and default values. This means there are no runtime performance penalties. See &lt;a href="http://www.sitechno.com/Blog/IntroducingEntityFrameworkContribEasyIPocoImplementationV01.aspx" class="externalLink"&gt;Introducing EF Contrib post &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more detailed information about this project. The following supporting projects are included as well and will enable the use of &lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=full%20disconnected%20n-tier%20usage&amp;amp;referringTitle=Home"&gt;full disconnected n-tier usage&lt;/a&gt; of your domain objects:&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Circular%20Weaver&amp;amp;referringTitle=Home"&gt;Circular Weaver&lt;/a&gt;&lt;/b&gt;: enables the serialization of object graphs with knowledge of 'original values'.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/efcontrib/Wiki/View.aspx?title=Editable%20Business%20Objects&amp;amp;referringTitle=Home"&gt;Editable Business Objects&lt;/a&gt;&lt;/b&gt;: does changetracking and provides the serializer with the correct values.&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Plug-in Edmx Code Generator&lt;/b&gt;:  easily add assemblies that will hook into the codegeneration part of Entity Framework. &lt;a href="http://weblogs.asp.net/michaeld/archive/2008/02/25/plug-in-edmx-code-generator-released.aspx" class="externalLink"&gt;Check this blog post out for more info!&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Community feedback
&lt;/h2&gt;Please contribute to this project by either contributing code or giving feedback. Let me know if you are interested in the project and if you'd like to see it completed.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;div class="rss"&gt;
&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx"&gt;Disconnected N-Tier objects using EntityFramework&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, April 07, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/RelationSupportForNtierEF.aspx"&gt;Relation support for n-tier EF&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, March 27, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/ProgressOnLightObjectsOnTheClientFullBlownEFEntitiesOnTheBackend.aspx"&gt;Progress on light objects on the client, full blown EF entities on the backend&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, March 21, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/SneakPreviewSerializingObjectsWithOriginalValues.aspx"&gt;Sneak preview: serializing objects with original values&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, March 17, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/ComplexTypesInEFHowTheyWorkAndSupportInEFContrib.aspx"&gt;Complex types in EF, how they work and support in EFContrib&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, March 14, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/RelationshipSupportInEFContrib.aspx"&gt;Relationship support in EFContrib&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, March 10, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/PostcompilingForEntityFrameworkPartVI.aspx"&gt;Postcompiling for Entity Framework: Part VI&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, February 25, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/PostcompilingForEntityFrameworkPartV.aspx"&gt;Postcompiling for Entity Framework: Part V&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, February 22, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/DefaultValuesForEfcontrib.aspx"&gt;Default values for efcontrib&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, February 21, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://www.sitechno.com/Blog/PostcompilingForEntityFrameworkPartIV.aspx"&gt;Postcompiling for Entity Framework: Part IV&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, February 21, 2008&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://www.sitechno.com/Blog/SyndicationService.asmx/GetRssCategory?categoryName=EF-Contrib" target="_blank"&gt;Ruurd Boeke Enterprise development and technobabble - EF-Contrib&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 14:39:55 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080416023955P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/efcontrib/SourceControl/ListDownloadableCommits.aspx</link><description>smoother solution configurations</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 12:41:35 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080416124135P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/efcontrib/SourceControl/ListDownloadableCommits.aspx</link><description>small fixes in the circularweaver plus example application in WPF &amp;#40;using Prism&amp;#41; that illustrates fetching records, changing and saving</description><author>RBoeke</author><pubDate>Wed, 16 Apr 2008 12:34:41 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080416123441P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/efcontrib/SourceControl/ListDownloadableCommits.aspx</link><description>Changed name of first sample</description><author>RBoeke</author><pubDate>Sun, 13 Apr 2008 11:23:51 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080413112351A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/efcontrib/SourceControl/ListDownloadableCommits.aspx</link><description>some more inheritance fixes &amp;#43; a small tests</description><author>RBoeke</author><pubDate>Sat, 12 Apr 2008 19:59:12 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080412075912P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/efcontrib/SourceControl/ListDownloadableCommits.aspx</link><description>inheritance support on client and serializer</description><author>RBoeke</author><pubDate>Fri, 11 Apr 2008 08:49:39 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080411084939A</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/efcontrib/SourceControl/ListDownloadableCommits.aspx</link><description>inheritance support for circular weaver</description><author>RBoeke</author><pubDate>Thu, 10 Apr 2008 20:01:15 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080410080115P</guid></item></channel></rss>