这个问题来自之前的问题,如Does Entity Framework 6 support .NET 4.0?
我的问题具体是,如何在EF6和.NET v4.0中使用NotMapped
数据注释?
我发现的大多数文章都假设开发人员也迁移到了.NET v4.5或更高版本,其中数据注释命名空间已移至System.ComponentModel.DataAnnotations.Schema
并存在于System.ComponentModel.DataAnnotations
dll中。
答案 0 :(得分:3)
.NET 4.0版本的Entity Framework 6直接在NotMappedAttribute
中包含EntityFramework.dll
的定义。它存在于同一名称空间中,即System.ComponentModel.DataAnnotations.Schema
。
但是,您需要确保拥有.NET 4.0版本的EF。如果您的项目之前的目标是.NET 4.5,并且您当时添加了EF,那么您就拥有了.NET 4.5版本的EF。将项目更改为.NET 4.0还不足以解决此问题。您需要从项目中删除EF并重新添加。
答案 1 :(得分:0)
我解决了自己的问题(打开我的眼睛!)。数据实体位于单独的项目中,该项目未包含对实体框架的引用。在实体项目中安装相同的EF6 NuGet包解决了这个问题。
更新:我对EF6有进一步的问题所以我回滚到EF5,而是创建了一个新的ViewModel,其中包含我想要添加到原始实体的属性。这保持了以令人满意的方式在上述解决方案中受到损害的关注点的分离。它还反映了代码库中其他地方采用的方法。