Rub*_*rez 12 entity-framework code-first data-annotations entity-framework-core
您可以使用Fluent Api指定唯一键:
public class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasIndex(u => u.Nickname)
.IsUnique();
}
}
public class User
{
public int UserId { get; set; }
public string Nickname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是你可以用数据注释来做吗?
方法更改EF7 Beta 8:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.Index(u => u.Nickname)
.Unique();
}
Run Code Online (Sandbox Code Playgroud)
我担心Index在EF 7中仍然不支持创建使用数据注释.请检查此链接.
我也尝试在上一版本中找到与该主题相关的一些信息,但我找不到任何内容.
我现在发现一个帖子从这样说的EF开发商之一(divega):
在EF7中,我们支持使用流畅的API而不是属性来定义索引,至少还没有.您可能引用的IndexAttribute是我们在某些时候添加到EF 6.x包中但从未真正成为标准DataAnnotation的东西.
我们不希望从EF6中复制原始属性,因为我们想要更改其中的一些内容.此外,直接在DataAnnotations中使用它可能比将其添加到EF7包更有意义.我应该提一下,我们不太可能在EF7 RTM时间帧中添加IndexAttribute.
显然,这是一项不会添加到EF Core的功能,至少目前是这样.
无法使用数据批注配置索引.
但你可以使用Fluent Api来做到这一点:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.HasIndex(b => b.Url)
.HasName("Index_Url");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4963 次 |
| 最近记录: |