【发布时间】:2015-04-08 23:11:12
【问题描述】:
我有一个 Linq 查询需要创建或更新一个表,然后获取 id 并填充另一个表。
示例:
public Batch SaveBatch(Batch batchModel, Audit auditModel)
{
int batchID = 0;
Batch batch;
Audit audit = null;
var exists = db.Batches.Where(t => t.BatchID == batchModel.BatchID);
if (exists.Any())
{
batch = exists.First();
batchID = batch.BatchID;
if(batch.StatusID != 1)
{
audit = CreateAudit(batchID, auditModel);
}
else
{
if (auditModel.EventTypeID == 16)
{
audit = CreateAudit(batchID, auditModel);
}
else
{
var checkTrans = GetAllTransactions(batchModel.BatchID);
if (checkTrans.Count() > 1)
{
audit = CreateAudit(batchID, auditModel);
}
}
}
}
else
{
batch = new Batch()
{
CreatedDate = batchModel.CreatedDate
};
db.Batches.InsertOnSubmit(batch);
batchID = batch.BatchID;
audit = CreateAudit(batchID, auditModel);
}
batch.Reason = batchModel.Reason;
db.Audit.InsertOnSubmit(audit);
db.SubmitChanges();
return batch;
}
我收到错误消息说外键不存在或不匹配。
我需要的是插入或更新表批次,然后从批次中插入或更新的记录中获取 ID。使用 BatchesID,我可以填充表 Audit。
但是如果插入到表 Audit 中出现任何问题,它会回滚对表 Batches 所做的更改。
Table Audit 包含 Batches 表的外键。
SQL 表:
Batches
BatchesID | Reason | CreatedDate | ...
Audit
AuditID | BatchesID | ...
【问题讨论】:
-
这是什么类型的 LINQ? LINQ到SQL?实体框架?