我有一个创建一个负责插入标题/明细记录的对象的进程。如果我运行代码自己插入表中,那么每件事都运行良好。但是,当我将该代码称为循环中的单独类时我 得到例外:
System.Data.Entity.Infrastructure.DbUpdateException未处理
Message = INSERT语句与FOREIGN KEY约束“FK_CAS_ClaimsAdjustment_Header835”冲突。冲突发生在数据库“ERA835DB”,表“dbo.Header835”,列“TRANSACTIONID”。
TRANSACTIONID
表中的Header
列设置为Identity=True
。子表CAS_ClaimsAdjustment
的列TransactionID
为FK Header.TransactionID
。
为什么DBContext.SaveChanges()
的行为似乎有所不同,具体取决于调用相同代码的方式?
foreach (var file in Files)
{
Parser parser = new Parser();
parser.HandleFile(file);
}
public class Parser
{
public void HandleFile(string file)
{
using (Model.DbContext dbcontext)
{
foreach (var itemn in file)
{
Claims claim = new Claims();
// ...
dbcontext.Claims.Add(claim);
}
dbcontext.SaveChanges();
}
}
}
答案 0 :(得分:0)
我解决了我的问题。在我的控制台应用程序中,我将我的实体声明为“静态”。当然这没用。一旦我删除了static关键字,一切都很好。