【发布时间】:2016-07-20 17:10:55
【问题描述】:
我有两张桌子
create table AAA ( AAAKey int primary key, .... )
create table BBB (
AAAKey int references AAA(AAAKey), -- Foreign key to AAA
X int references X (XKey),
....
primary key (AAA, X))
在 C# 中,EF 6.1.3 生成的类
[Table("dbo.AAA")]
public partial class AAA
{
public AAA() { BBB = new HashSet<BBB>(); }
[Key] public int AAAKey { get; set; }
public virtual ICollection<BBB> BBB { get; set; }
}
[Table("dbo.BBB")]
public partial class BBB
{
[Key] public int AAAKey { get; set; }
[Key] public int XKey { get; set; }
public virtual AAA AAA { get; set; }
}
......
protected override void OnModelCreating(DbModelBuilder medelBuilder)
{
....
modelBuilder.Entity<AAA>()
.HasMany(e => e.BBB)
.WithRequired(e => e.AAA)
.HasForeignKey(e => e.AAAKey)
.WillCascadeOnDelete(false);
但是,代码在运行 SaveChanges() 时会引发 execption?
更新:
这个问题很奇怪,它只发生在某些数据上。我通过将我原来的foreach (...) {...}; SaveChange() 转换为foreach (.....) { .....; SaveChange(); } 找到了解决方案。这听起来是EF的错误吗?顺便说一句,我测试的所有数据总是有重复键插入异常,这是意料之中的。
【问题讨论】:
标签: c# entity-framework entity-framework-6