好吧,在一个早上把我的头撞在墙上之后,我把它扔在那里了。
我有一个带有复合 PK(Column1、Column2、Column3)的 DB 表(Table1)。(Column1,Column3) 也是另一个表 (Table2) 的 FK。
尝试使用 Code First EF6 (6.1.3),这是模型:
[Table("DB.Table1")]
public partial class Object1
{
[Key]
[Column(Order=0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Column1 { get; set; }
[Key]
[Column(Order=1)]
public byte Column2 { get; set; }
[Key]
[Column(Order=2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Column3 { get; set; }
public virtual Object2 SecondObject { get; set; }
}
[Table("DB.Table2")]
public partial class Object2
{
public Object2()
{
FirstObjects = new HashSet<Object1>();
}
[Key]
[Column(Order=0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Column1 { get; set; }
[Key]
[Column(Order=1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Column3 { get; set; }
public virtual ICollection<Object1> FirstObjects { get; set; }
}
我的模型构建器(流利的 API):
modelBuilder.Entity<Object1>()
.HasRequired(o => o.SecondObject)
.WithMany()
.HasForeignKey(o => new { o.Column1, o.Column3 });
也许我在 Object2 中缺少 ICollection 的东西?
我收到一条错误消息,提示“从表 Object1 (Column1, Column3) 到表 Object2 (Column1, Column3):: Insufficient mapping: Foreign key must be mapped to some AssociationSet 或 EntitySets 参与外键关联概念方面。”
我试过了:
modelBuilder.Entity<Object1>()
.HasRequired(o => o.SecondObject)
.WithMany(o => o.FirstObjects)
.HasForeignKey(o => new { o.Column1, o.Column3 });
无济于事。我收到“在 Object2 上声明的 FirstObjects 已配置有冲突的外键”错误。
这是从现有数据库生成的 CodeFirst。