2014-11-06 98 views
0

任何人都多的關係知道如何實現此方案與EF的Code First流利的API:實體框架 - 代碼第一 - 一個與共享主鍵

public class Referancial 
{ 
    // Identity 
    public int KeyID { get; set; } 

    public string Code { get; set; } 

    public virtual ICollection<Translation> Translations { get; set; } 

} 

public class Translation 
{ 
    // refer to Referancial.KeyID 
    public int KeyID { get; set; } 

    public int LanguageID { get; set; } 

    public string Label { get; set; } 

} 

感謝您的答覆

+0

什麼有關數據註解?或者你只需​​要流利的API方法? – 2014-11-06 16:36:07

+0

感謝您回覆我使用Fluent API。 – 2014-11-06 16:38:55

+0

所以我不應該打擾給出一個使用數據註釋的答案? – 2014-11-06 16:39:39

回答

1

與其他模型嘗試,我認爲它會適合更好地爲您

public class Referancial 
{ 
    // Identity 
    public int KeyID { get; set; } 

    public string Code { get; set; } 

    public virtual ICollection<Translation> Translations { get; set; } 

} 

public class Translation 
{ 
    //Translation needs its own Key 
    public int ID { get; set; } 
    // reference directly the Referencial object instead of the ID 
    public Referencial Referencial { get; set; } 

    public int LanguageID { get; set; } 

    public string Label { get; set; } 
} 

要配置模型,

_modelBuilder.Entity<Referancial>().HasKey(r => r.KeyID); 
_modelBuilder.Entity<Translation>().HasKey(t => t.ID); 
_modelBuilder.Entity<Referancial>().HasMany(r => r.Translations).WithRequired(t => t.Referencial).WillCascadeOnDelete(true); 
0

//在模型製作:

保護覆蓋無效OnModelCreating(DbModelBuilder模型構建器) {

 // Person 

     modelBuilder.Entity<Person>().HasKey(e => e.PersonID) 
            .ToTable("Persons") 
            .Property(e => e.PersonID) 
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 


     //Referancial 
     modelBuilder.Entity<Referancial>().HasKey(e => e.KeyID) 
              .ToTable("Referancials") 
              .Property(e => e.KeyID) 
              .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 


     //Translation 
     modelBuilder.Entity<Translation>().ToTable("Translations") 
              .HasKey(e => e.KeyID) 
              .Property(e => e.KeyID) 
              .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 


     modelBuilder.Entity<Referancial>() 
        .HasOptional(e=>e.Translations) 
        .WithMany() 
        .HasForeignKey(e => e.KeyID); 

     base.OnModelCreating(modelBuilder); 
    } 

但shoz我一個錯誤:模型生成過程中檢測到

一個或多個驗證錯誤:

PersonSearch.Models.Referancial_Translations:在關係「Referancial_Translations在角色引用約束「Referancial_Translations_Target」多重矛盾」。由於從屬角色中的所有屬性都是不可空的,所以主體角色的多重性必須爲'1'。 Referancial_Translations_Source::多重性在「Referancial_Translations」關係中的'Referancial_Translations_Source'角色中無效。由於依賴角色是指關鍵屬性,所以依賴角色的多重性的上界必須是'1'。

+0

翻譯的KeyID不能與模型中的外鍵和主鍵同時出現。翻譯需要自己的主鍵。 – 2014-11-06 18:37:08

相關問題