【发布时间】:2016-04-06 10:31:09
【问题描述】:
在我的应用程序中,我使用 EntityFramework 和代码优先方法。我将 EF7 与 ASP.NET 4.6 MVC 和 VS2015 一起使用。我的模型类如下:
public class Customer
{
public int CustomerID { get; set; }
[StringLength(100)]
[Required]
public string FirstName { get; set; }
[StringLength(100)]
[Required]
public string LastName { get; set; }
[Required]
[EmailAddress(ErrorMessage = "Please enter valid Email Address.")]
[StringLength(100)]
[Index("IX_EA", IsUnique = true)]
public string EmailAddress { get; set; }
}
我的上下文文件如下:
public class CustomerContext : DbContext
{
public CustomerContext()
{
Database.EnsureCreated();
}
public DbSet<Customer> Customers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
var connection = System.Configuration.ConfigurationManager.ConnectionStrings["DbConnectionString"].ConnectionString;
options.UseSqlServer(connection).UseRowNumberForPaging();
}
}
因此,从模型类中您可以看到我想为数据库表中的 EmailAddress 列设置唯一约束意味着 EmailAddress 字段应包含重复值(电子邮件地址不应在表中重复)。但是当我成功运行项目数据库时,就会创建成功。但是那个唯一约束不在那里。我不明白为什么它没有在 EmailAddress 字段上设置该约束。
请帮助我使用 EntityFramework 的代码优先方法为字段设置唯一约束。
【问题讨论】:
-
尝试设置
Maxlength(200) -
如果 CONSTRAINT 创建唯一索引,您关心它什么?无论如何,索引“更好”并且强制执行唯一性 - 约束仅在您不设置索引时才有用。有索引吗?
-
它没有用。而且我认为长度不是问题
-
@TomTom,我没听明白。
-
如果你有一个唯一的索引,一个唯一的约束是没有用的。实际上,您也从不要求唯一的约束。它是否创建索引?这个问题有什么难理解的?
标签: c# entity-framework