一千萬個為什麽

搜索

實體框架4中的唯一鍵

現有的數據庫模式具有唯一的非主鍵,以及一些依賴它們的外鍵。

是否可以在Entity Framework v4中定義不是主鍵的唯一鍵?怎麽樣?

最佳答案

實體框架 6.1 現在支持使用Data Annotations和Fluent API的唯一身份驗證。

Data Annotations (Reference)

public class MyEntityClass
{ 
    [Index(IsUnique = true)]
    [MaxLength(255)]//for code-first implementations
    public string MyUniqueProperty{ get; set; } 
}

Fluent API (Reference)

public class MyContext : DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder 
                .Entity() 
                .Property(t => t.MyUniqueProperty) 
                .HasMaxLength(255)//for code-first implementations
                .HasColumnAnnotation( 
                    "Index",  
                    new IndexAnnotation(new[] 
                        { 
                            new IndexAttribute("Index") { IsUnique = true } 
                        })));
        }
    }
}

您必須應用索引並將unique屬性設置為true。默認情況下,根據文檔,索引是非唯一的。

此外,您還必須在項目中安裝Entity Framework 6.1 NuGet包,以便將新API用於索引。

關於代碼優先實現的註意事項: VARCHAR(MAX)不能是唯一約束的一部分。您必須將最大長度指定為數據註釋或Fluent API。

轉載註明原文: 實體框架4中的唯一鍵