2012-05-15 80 views
1

我對實體框架和模式相當陌生。我如何將數據插入到子表中?如何將行插入子表中?

我將信息插入到父表中。我是否必須返回該行的標識,然後發出另一個插入?

用戶表和用戶角色。

我一直在努力尋找一天的解決方案,但我認爲它是因爲我在尋找錯誤的結果。我的結構是使用工作單元/存儲庫模式設置的。

任何幫助將有所幫助。謝謝!

回答

3

獲取父對象。將子記錄添加到其導航屬性。

像這樣

int orderId=33; 

var parent=dbContext.Orders.Where(x=>x.Id==orderId); 

parent.Details.Add(new OrderDetail{ Quantity=4, ItemId=37}); 
parent.Details.Add(new OrderDetail{ Quantity=2, ItemId=48}); 

dbContext.SaveChanges(); 

假設訂單是您的主實體和細節是你的孩子實體的DbContext是你的DbContext類對象。

編輯:如果您一起加入吧,

Order parent=new Order { CustomerId=35, Discount=43.63 }; 
parent.Details.Add(new OrderDetail{ Quantity=4, ItemId=37}); 
parent.Details.Add(new OrderDetail{ Quantity=2, ItemId=48}); 

dbContext.Orders.Add(parent); 
dbContext.SaveChanges(); 
+0

這是做到這一點的唯一途徑?抓住身份證,然後運行另一個SaveChanges()?我試圖看看是否有另外一種方式來執行此操作,因爲它將運行SaveChanges()兩次。 – xivo

+0

@AllenTong:它只運行一次SaveChanges。不是兩次。 – Shyju

+0

是的,但我的意思是當我添加Order時,然後添加了OrderDetails。這會導致我在添加訂單時運行兩次,並且需要在後面添加orderdetail。 – xivo