【发布时间】:2016-04-17 08:25:59
【问题描述】:
我有两个具有双向 0 对一关系的模型。
A,B。A可能有B。B可能有A。
目前这些都是在每个类中设置导航属性,没有外键属性(使用流畅的语法设置)
public class A{
[key]
public int Id {get;set;}
public B B {get;set;}}
public class B{
[key]
public int Id {get;set;}
A A {get;set;}
}
modelBuilder.Entity<B>()
.HasOptional(b => b.A)
.WithOptionalPrincipal()
.Map(b => b.MapKey("AId"));
modelBuilder.Entity<A>()
.HasOptional(p => p.B)
.WithOptionalPrincipal()
.Map(p => p.MapKey("BId"));
到目前为止,一切正常,正如预期的那样。
我现在想在我的实体中公开这些 ID 属性,以便帮助更新断开的实体关系。
当我只添加属性时,每个 error 0019: Each property name in a type must be unique on ID field 都会出现“重复名称”错误
如果我删除映射,然后尝试使用键,它似乎可以工作,但迁移决定删除 FK 列,然后用不同的名称重新添加它们。这会破坏我现有的所有数据。
我尝试重写 fluent 映射以使用 HasMany().HasForeignKey(),但这也不起作用。 (尽管它并不多,但似乎需要获取 HasForeignKey 方法?)
在保持架构相同以保留数据库中现有数据的同时升级这种关系的正确方法是什么?
【问题讨论】:
标签: c# entity-framework foreign-keys