【发布时间】:2018-09-19 08:45:38
【问题描述】:
根据上图,我有一个要求,表 C 需要同时引用表 A 和表 B。
注意:Table_C 中的RefId 是表A 和B 的引用键。
请参考代码sn-ps,
Table_A 类
public partial class Table_A
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Table_C> Table_C { get; set; }
}
Table_B 类
public partial class Table_B
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Table_C> Table_C { get; set; }
}
Table_C 类
public partial class Table_C
{
public int Id { get; set; }
public int RefId { get; set; }
public Type Type {get; set; }
public virtual Table_A Table_A { get; set; }
public virtual Table_B Table_B { get; set; }
}
Fluent API
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Table_1>()
.Property(e => e.Name)
.IsFixedLength();
modelBuilder.Entity<Table_1>()
.HasMany(e => e.Table_3)
.WithRequired(e => e.Table_1)
.HasForeignKey(e => e.RefId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Table_2>()
.Property(e => e.Name)
.IsFixedLength();
modelBuilder.Entity<Table_2>()
.HasMany(e => e.Table_3)
.WithRequired(e => e.Table_2)
.HasForeignKey(e => e.RefId)
.WillCascadeOnDelete(false);
}
但是,当尝试使用上面显示的代码实现此要求时,会出现以下错误。
INSERT 语句与 FOREIGN KEY 约束冲突 “FK_dbo.TableC.TableA_Id”。数据库“TestDB”中发生冲突, 表“dbo.TableA”,列“Id”。声明已终止
如何使用 Entity Framework 6(SQL Server 2014,.NET framework 4.6.1)来实现?
【问题讨论】:
标签: asp.net .net sql-server entity-framework entity-framework-6