1
私は、新しいプロジェクトでEntity Framework 6を使用しています。Entity Frameworkを使用してトランザクション内で2つのクエリを実行する方法は?
同じトランザクションで2つの異なるクエリを実行してからコミットする必要があります。しかし、2番目のクエリでは、最初のクエリで生成されたIDが必要です。ここで
は私が
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Add(ManageEmployeeAddTimeDialog model)
{
bool added = false;
if (ModelState.IsValid)
{
using (var conn = new BaseContext())
{
using (var dbTransaction = conn.Database.BeginTransaction())
{
try
{
var entry = conn.Entry.Add(new Entry(model)); // entry.Id is always 0!
conn.EntryRevision.Add(new EntryRevision(entry)); // this command needs the last inserted id aka entry.Id
conn.SaveChanges(); // Save changes?
added = true;
dbTransaction.Commit();
}
catch (Exception)
{
dbTransaction.Rollback();
throw;
}
}
}
}
return Json(new { Added = added });
}
をやっていることであるトランザクションは、私がデータベースにコミットレコードの両方を取得して正常に動作しているようです。しかし、2番目のレコードは、最後に挿入されたIDではなく、が0
になります。
ここで私は何をしていますか?トランザクションで最後に挿入されたIDを取得するにはどうすればよいですか?
のように見えるのだろうか? EntryRevision-> Entry関係にFKを定義すると、自動的に保存されます。あなたのシナリオでは、その機能を使わないようにしていますか? –