2

我创建了一个单独的项目并将我的模型复制到这个项目中。我参考了

using System.ComponentModel.DataAnnotations

我的模型定义如下:

 public class File
 {
        [Key]
        [Column("file_id")]
        public int Id { get; set; }

        [Column("user_id")]
        public int UserId { get; set; }

  ...
}

我得到的错误是:

The type or namespace Column could not be found ...

如果我添加对 EntityFramework 的引用,它可以正常工作,但我想通过为我的 Web Api Rest Client 库引用它来重新使用我的模型项目,并且不想无缘无故地引入 EF。

我正在使用 .net 4.0

他们是否在 4.5 中解决了这个问题(使其与 EF 松散耦合)?

4

3 回答 3

3

是的,.NET 4.5 解决了这个问题。

EntityFramework.dll带有 .NET 4.0(也称为 EF 4.4)的 EF 5的对象目录显示了 EF 程序集中的System.ComponentModel.DataAnnotationsSystem.ComponentModel.DataAnnotations.Schema命名空间中的所有属性:

带有 .NET 4.0 的 EF 5

EntityFramework.dll.NET 4.5 的 EF 5 不再包含这些命名空间:

带有 .NET 4.5 的 EF 5

这些属性已移至 .NET 4.5 框架程序System.ComponentModel.DataAnnotations.dll集中,位于它们之前在 EF 程序集中的相同命名空间下:

.NET 4.5 的数据注释

MinLength并且MaxLength也在System.ComponentModel.DataAnnotations其中,其中所有属性的总列表对于屏幕截图来说太长了。)

于 2013-09-05T18:55:29.447 回答
0

您不需要引用所有 EF。您应该可以参考System.ComponentModel.DataAnnotations.dll. 添加 EF 可能只是将其添加为您的参考。

仅供参考, MSDN会告诉您框架类存在于哪个命名空间和程序集中。

于 2013-09-05T18:35:13.977 回答
0

您不必使用属性来创建元数据。POCO模型的整个概念就是这样。

诀窍是拥有一组不引用 EF的模型类。您可以在任何上下文中安全地重用此程序集。

然后,在另一个程序集中,您创建 DbContext 类,引用 EF 并以编程方式创建元数据。在 EF 中,这种方法称为 Code First Fluent Api。

http://codefirst.codeplex.com/

于 2013-09-05T19:01:21.553 回答