如何首先在EF代码中为模型中的列添加唯一键

时间:2014-11-25 09:51:25

标签: entity-framework indexing entity-framework-6

我正在尝试将列作为我模型中的唯一键。

我的代码是:

public class Customer
{
    [Index("abcd",IsUnique = true)]
    public int CustomerID { get; set; }
}

我正在使用以下参考资料:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

还在我

Error   103 The type or namespace name 'IndexAttribute' could not be found (are you missing a using directive or an assembly reference?)    

我错过了什么吗? 我使用的是EF 6.1版本

提前致谢

4 个答案:

答案 0 :(得分:4)

改写我的回答。 (如果现在允许缩短URL,则道歉)

在.net 4.5中,Index属性仅存在于文件(EntityFramework.dll)

Dll System.ComponentModel.DataAnnotations.Schema不包含Index属性

EntityFramework.dll version 6或更高版本包含此属性

浏览到文件EntityFramework.dll并添加一个引用,错误将消失,代码将编译。

命名空间System.ComponentModel.DataAnnotations.Schema也是此EntityFramework.dll的一部分

我认为它是微软的错误,可能会在.net 5中得到纠正

答案 1 :(得分:2)

  1. 右键单击项目参考部分

  2. 然后在弹出的左侧菜单中点击添加参考,选择装配

  3. 检查System.ComponentModel.DataAnnotations dll

  4. 在代码中导入以下命名空间

    using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema;

  5. Install Entity Framework for this project

答案 2 :(得分:1)

你需要确保在模型类所在的项目中引用了EntityFramework - 我将模型类从我的MVC网站移到了一个单独的DLL中,但我认为因为IndexAttribute在System.ComponentModel中它位于System.ComponentMode.DataAnnotations程序集中的.DataAnnotations.Schema命名空间 - 它实际上位于EntityFramework程序集中,因此您需要引用。

感谢Animuson指出这一点。

答案 3 :(得分:0)

解决方案: 只需在需要使用IndexAttribute的每个项目中安装Entity Framework。


分步说明:

  • 打开程序包管理器控制台
  • 复制粘贴以下内容:Install-Package EntityFramework -Version 6.2.0 -ProjectName MyProject
  • 用您的项目替换“ MyProject”,然后按Enter键

更多信息:https://www.nuget.org/packages/EntityFramework/