1
我需要一些幫助來理解我們試圖在實體框架中解決的情況。實體框架6-保存交易中的數據
我們正在努力更新兩個表 1.映射表(兩個外鍵=產品編號和anotherId) 2.在表中創建一個新的記錄(在產品和生成的主鍵調用是productId參數)
我們希望確保成功更新產品表和映射表,或者確保交易角色返回。
我們使用一個單一的交易爲
using (var context = new SomeContext())
{
using (var dbContextTransaction = context.Database.BeginTransaction())
{
try
{ //Create the record to be saved
var product = new Product{ // set the data}
var newProductId = context.SaveChanges();
//Update the Mapping Table
var anotherData = context.AnotherTable.where(x => x.id = anotherId).FirstOrDefault();
var productData = context.Product.where(x => x.id = newProductId).FirstOrDefault();
//Create the Mapping Table record
productData.AnotherDatas.Add(anotherData);
context.SavceChanges();
dbContextTransaction.Commit();
}
catch (Exception)
{
dbContextTransaction.Rollback();
}
}
}
但問題是,
var productData = context.Product.where(x => x.id = newProductId).FirstOrDefault();
回來爲空我是這樣假設是由於該事務未提交。
如何克服這種情況? 如何創建映射記錄並使用新創建的ID? 在同一個事務中運行多次保存是否會導致錯誤?
感謝好友......我正在添加產品的上下文,但我認爲我的腦袋都被淹沒了,我期待保存返回Id並沒有意識到它。我的數據還有另外一個問題,就是我的表只有外鍵,而實體框架把它當作一個視圖對待,並且不讓我更新它......這是有道理的..我總是需要將主鍵添加到我的映射中,修復。 – fireholster
@fireholster,沒問題!如果數據沒有唯一標識符,EF可能會錯誤地工作,即使調用了視圖。此鏈接可能會有幫助:http://girlfromoutofthisworld.com/entity-framework-and-setting-primary-keys-on-views/ –