我正在从数据库EF项目创建Codefirst。这是由我生成的数据库我无论如何都无法改变。我已经手动创建了表格之间的大多数关系,但是我已经用桌子打了一个墙。
有两张桌子
T1: FK3
T2: PK1 PK2 PK3
T1:FK1 FK2之间的关系是硬编码逻辑。 因为表是T1,所以FK1 =“Foo”而FK2 =“BAR”
我已经创建了
T1
[NotMapped]
FK1 {get {return "FOO"}}
[NotMapped]
FK2 {get {return "BAR"}}
用流畅的api
映射modelBuilder.Entity<T1>
.HasRequired<T2>
.WithMany()
.HasForeignKey(f => new {f.FK1, f.FK2, f.FK3 })
我收到错误:
The foreign key component 'FK1' is not a
declared property on type 'T1'. Verify that it has not been
explicitly excluded from the model and that it is a valid primitive property.
如何创建这种关系?我试过DataAnnotations fluentapi似乎没有处理它。
答案 0 :(得分:0)
您无法使用[NotMapped]
属性作为键。未映射意味着exaclty - &#34;这是c#代码,不会映射到数据库&#34;。
但是,您可以使用[DatabaseGenerated(DatabaseGenerationOption.Computed)]
并计算数据库中的值:this document
PS:宣布外键的无炫目方式是[ForeignKey]
,只需使用int
来保存ID。