【问题标题】:How to make a field unique ASP.NET MVC5如何使字段唯一 ASP.NET MVC5
【发布时间】:2015-12-06 09:31:08
【问题描述】:

我想让电子邮件字段独一无二。这是ApplicationUser(IdentityUser)的一个字段,这就是我所做的: 命名空间 BidProject.Models {

public class ApplicationUser : IdentityUser
{
    public int UserID { get; set; }
    [Index(IsUnique = true)]
    public string Email { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }


}

我有这些参考资料:

using Microsoft.AspNet.Identity.EntityFramework;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

我得到了这些错误:

找不到类型或命名空间名称“索引”(您是否缺少 using 指令还是程序集引用?)
类型或命名空间 找不到名称“IndexAttribute”(您是否缺少使用 指令还是程序集引用?)

如何使该字段独一无二?或者你能告诉我 IdentityUser 的 UserName 字段是如何唯一的吗?谢谢。

【问题讨论】:

  • 使用[Index("IX_EmailUnique", 1, IsUnique = true)]

标签: c# asp.net entity-framework asp.net-identity


【解决方案1】:

添加这个:

using System.ComponentModel.DataAnnotations.Schema;

如果这不起作用,请检查您是否引用了 EntityFramework.dll。

【讨论】:

  • 最好的方法是使用 NuGet。转到解决方案资源管理器,在您的项目下,右键单击引用,然后选择管理 NuGet 包。
  • 在我的引用中我可以看到 EntityFramework 和 EntityFramework.SqlServer.. 所以我想我有它
  • 您的 EntityFramework 的版本是多少?请点击 References 下的 EntityFramework,然后在 Properties 窗格中检查 Version。
  • 现在是 6.0.0.0。谢谢。
【解决方案2】:

您应该为索引指定一个名称。使用以下语法。

[Index("IX_EmailUnique", 1, IsUnique = true)]

【讨论】:

  • 这不适用于 EF6,它必须至少是 EF6.1
【解决方案3】:

您似乎缺少文件顶部的命名空间,或者缺少对 EntityFramework.dll 的项目引用?尝试将光标放在“索引”一词内,然后按 ctrl-。 -- 您应该会看到一个弹出菜单,提供类似“解决参考”或“添加使用以使用 System.ComponentModel.DataAnnotations.Schema;”之类的内容;

如果你有一个引用 .net 4.5 程序集的 .net 4.0 项目,有时这会破坏事情。您需要将项目升级到框架的更新版本。

【讨论】:

  • 好的。编译器告诉你它找不到 IndexAttribute 类,所以它要么是(1)一个不正确的命名空间,要么(2)你没有对库的项目引用(ef?)或者(3)你比如说,一个 .net 4.0 项目引用了一个 .net 4.5 程序集:有时这会破坏事情
  • 我想我满足了所有的限制条件。我的项目是.net 4.5。我有对 EF 的引用,并且命名空间是正确的。
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 2021-11-20
相关资源
最近更新 更多