[英]Inserting an entity and dependent entities using RIA Services
我有一個關於使用RIA Services(帶有Silverlight 4.0)插入具有相關實體的實體的問題。
假設我的(sql)數據庫中有一個名為“ Beer”的實體,一個名為“ Supplier”的實體,其關系為: Beer 1-n Supplier 。 一種啤酒有多個供應商。
現在有以下用例:用戶輸入了5個供應商的新啤酒。
在Silverlight視圖上,我現在得到了兩個DomainDataSource
。 在Beer DomainDataSource
我添加並提交新啤酒,在Supplier DomainDataSource
我現在提交供應商,其中包含將他們鏈接到啤酒的外鍵。
我的問題是:我如何確保首先提交啤酒,然后再提交依賴(記住外鍵)供應商?
我知道我可以使用OnSubmitted
事件簡單地鏈接SubmitChanges()
。 但是這個解決方案很不錯。。。la腳。 它使一些非常丑陋的代碼。
感謝您提出的所有建議!
不幸的是,沒有辦法強制同一ChangeSet中的更新順序。
但是,如果所有新供應商都使用新啤酒(大IF)提交給服務器,則可以在Upddate方法中手動檢查ChangeSet:
public void UpdateBeer(Beer beer)
{
foreach(ChangeSetEntry changeSetEntry in ChangeSet.Entries)
{
if (changeSetEntry.Entity.GetType() == typeof(Supplier))
{
Supplier supplier = (Supplier)changeSetEntry.Entity;
UpdateSupplierInternal(supplier);
}
}
DataContext.Beers.Attach(beer, ChangeSet.GetOriginal(beer));
}
那調用了一個單獨的方法來更新供應商。 您仍然需要一個UpdateSupplier方法,否則RIA會在ChangeSet中存在它時將引發異常,但是該方法不應執行任何操作:
public void UpdateSupplier(Supplier supplier)
{
// do nothing
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.