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 :(得分: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