我刚安装了EF4的POCO模板.我的模型中有一个实体,AnnouncementText,并且T4文件似乎正确生成.当我访问自动生成的属性时,尝试访问此新实体会引发以下错误MyObjectContext.AnnouncementTexts:
InvalidOperationException:无法找到EntityType'MyNamespace.AnnouncementText'的映射和元数据信息.
AnnouncementTextPOCO 上的属性似乎与数据库中的列匹配,并且我没有更改任何自动生成的代码.
堆栈跟踪是:
at System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType)
at System.Data.Objects.ObjectContext.GetEntitySetForNameAndType(String entitySetName, Type entityCLRType, String exceptionParameterName)
at System.Data.Objects.ObjectContext.CreateObjectSet[TEntity](String entitySetName)
at MyNamespace.MyObjectContext.get_AnnouncementTexts() in C:\<snip>\MyObjectContext.Context.cs:line 65
at MyNamespace.Class1.Main() in C:\<snip>\Class1.cs:line 14
Run Code Online (Sandbox Code Playgroud)
如果我.tt从解决方案中删除文件并在模型上启用代码生成,我可以毫无问题地访问该属性.
这是我的代码,如果可能有帮助:
using (var context = new MyObjectContext())
foreach (var at in context.AnnouncementTexts)
Console.WriteLine(at.Title);
Run Code Online (Sandbox Code Playgroud)
关于可能出错的任何想法?
DataContractSerializer要求使用DataContract 和DataMember属性标记类和成员.但是,在我的情况下,使用EFPocoAdapater框架自动生成类,并且这些属性不存在.
如何在没有这些属性的情况下使用DataContractSerializer强制序列化所有成员?
来自Alexdej:
这改变了3.5SP1,希望你看到:http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx
serialization entity-framework datacontractserializer efpocoadapter
我正在尝试使用Enterprise Library 4.1在ASP.NET MVC中设计一个应用程序我添加了Entity Framework POCO模板并将生成的实体移动到一个单独的"Entities"项目中.但是,我很难确定设计此应用程序的最佳方法.我假设ObjectContext应该与EDMX文件在同一个项目中.但是ObjectContext必须能够访问POCO.如果我创建存储库,则需要访问POCO和ObjectContext.我假设存储库逻辑和POCO应该在同一个项目中,但这不起作用,因为"POCO项目"和"EDMX项目"之间会有一个循环引用.我不想将ObjectContext放在"POCO项目"中,因为该项目不应该引用System.Data.
我已经四处搜索了一些例子,但几乎所有的例子我发现这个例子并没有使用最佳实践.也许我让这太复杂了.我只是想了解如何最好地设计应用程序.
entity-framework repository poco efpocoadapter entity-framework-4