使用RIA服务插入实体和从属实体
我有一个关于使用RIA服务(使用Silverlight 4.0)插入具有从属实体的实体的问题。使用RIA服务插入实体和从属实体
假设我在我的(sql)数据库中有一个名为“Beer”的实体和一个名为“Supplier”的实体,其关系为:Beer 1 - n供应商。一种啤酒有多个供应商。
现在有以下用例:用户输入一个新的啤酒,比方说5个供应商。
在silverlight视图上,我现在有两个DomainDataSource
的。在啤酒DomainDataSource
我添加并提交新啤酒,并在供应商DomainDataSource
我提交现在的供应商,其中包含一个外键,将他们链接到啤酒。
我的问题是:我怎样才能确保啤酒获得第一次提交和之后的依赖(记住外键)供应商?
我知道,我可以简单地链接使用OnSubmitted
事件的SubmitChanges()
。但是这个解决方案很好......蹩脚。它使一些非常丑陋的代码。
感谢您的众多想法!
回答:
不幸的是,没有办法强制进入同一ChangeSet的更新顺序。
但是,如果所有新的供应商提交新的啤酒服务器(一个大的IF),你可以手动检查变更您的Upddate方法:
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
}
以上是 使用RIA服务插入实体和从属实体 的全部内容, 来源链接: utcz.com/qa/262360.html