Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用代码优先属性定义模型的模型项目中是否需要EntityFramework?_C#_Asp.net Mvc_Entity Framework_Ef Code First - Fatal编程技术网

C# 在使用代码优先属性定义模型的模型项目中是否需要EntityFramework?

C# 在使用代码优先属性定义模型的模型项目中是否需要EntityFramework?,c#,asp.net-mvc,entity-framework,ef-code-first,C#,Asp.net Mvc,Entity Framework,Ef Code First,我创建了一个单独的项目,并将我的模型复制到这个项目中。 我提到 using System.ComponentModel.DataAnnotations 我的模型定义如下: public class File { [Key] [Column("file_id")] public int Id { get; set; } [Column("user_id")] public int UserId { get; s

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

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客户端库来重用我的models项目,并且不想无缘无故地引入EF

我正在使用.NET4.0


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

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


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

是的,此问题已通过.NET 4.5修复

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

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

属性已被移动到.NET 4.5 framework程序集中
System.ComponentModel.DataAnnotations.dll中,其名称空间与EF程序集中的名称空间相同:


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

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

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

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


如果模型属性的命名与表列的命名不同,该怎么办?e、 g.模型中的UserId,表列是user_id,这就是Fluent API的内容。如果名称对应于1-1,您不必编写任何支持代码,EF将只使用默认约定。换句话说,没有流畅的配置代码——它可以在默认情况下工作,没有任何自定义代码——您可以自定义映射。