0

我試圖在實體框架代碼中首先使用繼承來實現與公共實體解決方案的一對多關係。它不創造理想的結果。我需要這樣的模式:實體框架:一對多關係的公共實體

CommonEntity Address   Licensee User 
-------------- ------------- ----------- --------- 
CID(PK)   AddressID(PK) CID(FK/PK) CID(FK/PK) 
AddressID(FK) 

CommonEntity:

public class CommonEntity{ 
    [key] 
    public int CID{get;set;} 
    public virtual List<Address> Addresses { get; set; } 
} 

地址:

public class Address{ 
    [key] 
    public int AddressID{get;set;} 
    public string country{get;set;} 
} 

許可:

public class Licensee{ 
    [key] 
    [ForeignKey("CommonEntity")] 
    public int CID{get;set;} 
    public string CompanyName{get;set;} 
} 

用戶:

public class User{ 
    [key] 
    [ForeignKey("CommonEntity")] 
    public int CID{get;set;} 
    public string UserName{get;set;} 
    public string Pass{get;set;} 
} 

的DbContext類:

public class DataModelContext : DbContext 
{ 
    public DbSet<CommonEntity> CommonEntity { get; set; } 
} 

上面的代碼是給這個例外:

的ForeignKeyAttribute財產 'CommonID​​' 在類型 'TestingEF.Models.Licensee' 是無效的。在依賴類型 'TestingEF.Models.Licensee'上找不到'導航屬性 'CommonEntity'。名稱值應該是有效的 導航屬性名稱。

+0

當您使用'[ForeignKey的( 「CommonEntity」)]',你還需要一個導航屬性'公共虛擬CommonEntity CommonEntity {獲得;組; }'。 –

回答

0

我發現自己的解決方案。 型號:

public class CommonEntity{ 
    [key] 
    public int CID{get;set;} 

    public long AddressId { get; set; } 

    [ForeignKey("Address")] 
    public virtual List<Address> Addresses { get; set; } 
} 
public class Address{ 
    [key] 
    public int AddressID{get;set;} 
    public string country{get;set;} 
    public virtual ICollection<CommonEntity> CommonEntity { get; set; } 
} 
[Table("Licensee")] 
public class Licensee{ 
    public string CompanyName{get;set;} 
} 
[Table("User")] 
public class User{ 
    public string UserName{get;set;} 
    public string Pass{get;set;} 
} 

的DbContext類:

public class DataModelContext : DbContext 
{ 
     public DbSet<CommonEntity> CommonEntity { get; set; } 
     public DbSet<Address> Addresses { get; set; } 
} 
+0

這與您在問題中發佈的模型完全不同。在上述模式中,被許可方/用戶類不會成爲模型的一部分。它正在創建2個一對多關係(在'CommonEntity'和'Address'之間的不同方向上)。 – Smit

+0

是它的不同模型。問題出現在我的模型佈局中,我發現並修復了它。 –