如何在复合外键中使用NotMapped属性

时间:2016-02-08 21:01:51

标签: c# entity-framework entity-framework-6 ef-fluent-api

我正在从数据库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似乎没有处理它。

1 个答案:

答案 0 :(得分:0)

您无法使用[NotMapped]属性作为键。未映射意味着exaclty - &#34;这是c#代码,不会映射到数据库&#34;。

但是,您可以使用[DatabaseGenerated(DatabaseGenerationOption.Computed)]并计算数据库中的值:this document

PS:宣布外键的无炫目方式是[ForeignKey],只需使用int来保存ID。