0

我有一个关于使用RIA服务(使用Silverlight 4.0)插入具有从属实体的实体的问题。使用RIA服务插入实体和从属实体

假设我在我的(sql)数据库中有一个名为“Beer”的实体和一个名为“Supplier”的实体,其关系为:Beer 1 - n供应商。一种啤酒有多个供应商。

现在有以下用例:用户输入一个新的啤酒,比方说5个供应商。

在silverlight视图上,我现在有两个DomainDataSource的。在啤酒DomainDataSource我添加并提交新啤酒,并在供应商DomainDataSource我提交现在的供应商,其中包含一个外键,将他们链接到啤酒。

我的问题是:我怎样才能确保啤酒获得第一次提交和之后的依赖(记住外键)供应商?

我知道,我可以简单地链接使用OnSubmitted事件的SubmitChanges()。但是这个解决方案很好......蹩脚。它使一些非常丑陋的代码。

感谢您的众多想法!

回答

1

不幸的是,没有办法强制进入同一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 
} 
+0

我担心会这样,谢谢! – 2010-11-07 14:50:45

相关问题