我遇到了一种奇怪的行为,我真的不知道如何解决它。我试图在插入实体后(在 ExecuteDynamicInsert 之后)读取一个实体,当部分方法返回时,我总是得到一个 System.Data.Linq.DuplicateKeyException “数据库生成了一个已经在使用的密钥。 ”。
这是我试图通过一个非常简单的示例实现的目标:
数据上下文文件 MyDataContext.cs:
public partial class MyDataContext
{
public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{
//using (TransactionScope ts = new TransactionScope())
//{
base.SubmitChanges(failureMode);
//}
}
partial void InsertCountry(Country instance)
{
this.ExecuteDynamicInsert(instance);
Country country = this.Countries.Where(c => c.CountryID == instance.CountryID).Single();
} //Exception occurs when this method returns...
}
程序文件 Program.cs:
class Program
{
static void Main(string[] args)
{
using (MyDataContext dataContext = new MyDataContext())
{
Country c = new Country()
{
Code = "C",
CreatedBy = "Me",
CreatedDate = DateTime.Now,
ModifiedBy = "Me",
ModifiedDate = DateTime.Now
};
dataContext.Countries.InsertOnSubmit(c);
dataContext.SubmitChanges();
}
}
}
如果我在插入国家/地区后不阅读,代码可以正常工作,但无论出于何种原因我都需要阅读它,并且我不想使用 ChangeSet。
有没有办法实现这一点或解决这种行为?
提前致谢。