用一个SaveChanges()命令从头开始填充整个数据库(使用M:M关系)

本文关键字:使用 数据库 关系 命令 一个 SaveChanges 从头开始 填充 | 更新日期: 2023-09-27 18:20:42

我的数据库是空的,在我的C#应用程序中,我需要填充它并只使用一个.SaveChanges()命令-要么保存所有内容,要么什么都不保存。

我遇到的问题是:

我有3张表:Person,Class,PersonClass。那些是空的。

因此,在C#代码中,通过实体模型,我添加了一个人{Id:1,Name:John}。接下来,我想添加John和某个类之间的关系,然后添加该类。所以,在我创建John之后,我这样做:

John.Classes.Add(new Class
                        {
                            ClassId = 1
                        });

然后我在数据库中添加数学。

之后,我保存Changes(),得到违反PRIMARY KEY约束:不能插入重复的键。

在我的PersonClass表中,我有两列——personId和classId。它们都是主键,并且是bot而非自动递增的属性。

人员有两列:id和Name。类只有一个列id。id是主键,但不是自动递增的。

用一个SaveChanges()命令从头开始填充整个数据库(使用M:M关系)

如果你想强制执行"要么保存所有内容,要么什么都不保存",你不需要坚持"只保存一个SaveChanges",你应该将其拆分为多个保存,但将它们封装在同一事务中,并在最后只提交该事务。

优点是,如果它失败了,你将更好地了解它在哪里失败(而不是在最后做,需要深入挖掘异常才能得到一个神秘的错误)。

例如EF6或更高版本:http://msdn.microsoft.com/en-us/data/dn456843.aspx