2014-02-19 26 views
0
public class BasePage 
{   
    public int Id { get; set; } 
    ... 
} 

public class Region : BasePage 
{   
    public virtual MapCoordinates Map { get; set; } 
    ... 
} 

public class Place: BasePage 
{   
    public virtual MapCoordinates Map { get; set; } 
    ... 
} 

public class MapCoordinates 
{ 
    [Key, ForeignKey("BasePage")] 
    public int Id { get; set; } 

    public virtual BasePage BasePage { get; set; } 
    ... 
} 

獲取有關的SaveChanges此異常表:一到一個在每一個分層

無法確定相關的操作有效的排序。由於外鍵約束,模型要求或商店生成的值,可能會存在依存關係。

回答

0

使用此代碼:

public class BasePage 
    {   
     public int Id { get; set; } 

     public virtual MapCoordinate Map { get; set; } 
     ... 
    } 

    public class Region : BasePage 
    {     
     ... 
    } 

    public class Place: BasePage 
    {   
     ... 
    } 

    public class MapCoordinate 
    { 
     [Key] 
     public int BasePageId { get; set; } 
     ... 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<BasePage>() 
        .HasRequired(e => e.MapCoordinate) 
        .WithRequiredPrincipal(); 

     modelBuilder.Entity<BasePage>().ToTable(BasePages); 
     modelBuilder.Entity<MapCoordinate>().ToTable(MapCoordinates); 
    } 

請查看以下鏈接:

Associations in EF Code First: Part 4 – Table Splitting

Associations in EF Code First: Part 5 – One-to-One Foreign Key Associations

Code First and Fluent API one to one relationship

+0

我不想BaseP年齡有地圖,只有幾個派生類應該有它。 – Wonder

+0

你想要表分割? – Iraj

+0

我將BasePage與它的派生類(地區,地點等)放在一張表中,而在另一張表中放入地圖。 – Wonder

相關問題