使用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

回到顶部