none
如何使用多个关联的DomainDataContext,在编辑,删除,新增时都能用到. RRS feed

答案

  • 我刚试了一下,是可以的。

    你指的编辑窗口是什么?我直接在DataGrid里编辑就可以的。

    你单击更新的时候,可以通过查看一下domainContext.Entities.GetChanges();看看是否有更新。

    如果你多贴些code或许可以研究一下。或者给我发过来,我看一下。


    昨天测试了一下,原来是Load方法的赋值字段有问题,导致更新的时候,出现.行已不存在或已更改,经修改后,就可以正常关联更新了.

    大家看看,是不是Silverlight3 beta的BUG.测试了好几次,都是这样的情况.
    http://social.microsoft.com/Forums/zh-CN/silverlightzhchs/thread/a34fca42-44de-4125-a19d-6a6a3581aaf3
    这个问题,不知道楼上的朋友,有没有遇到过.
    aaaa
    2009年6月10日 1:13

全部回复

  • 可以通过在Server端添加[External] [Association] 指定 关联
    在Client端使用DomainContext.AddReference() 关联。
    2009年6月8日 19:16
  • 可以通过在Server端添加[External] [Association] 指定 关联
    在Client端使用DomainContext.AddReference() 关联。

    这些关联,我加了,但绑定到DataGird时,关联的实体,数据都显示不出来.
    比如:
    <data:DataGridTextColumn Header="姓名" Binding="{Binding Name}" Width="100"></data:DataGridTextColumn>
    <data:DataGridTextColumn Header="单位" Binding="{Binding Company.CompanyName}"></data:DataGridTextColumn>

    那个单位这一列,就没有数据显示,我这是这样关联的
    在人员信息实体中,有如下代码
    //公司信息
    [External]
    [Association("Company", "CompanyId", "CompanyId", IsForeignKey=true)]
    public Company Company { get; set; }
    aaaa
    2009年6月9日 1:35
  • 你是自己自定义的DomainService?还是继承的LinqToSql or LinqToEntity?

    Ria Service相对 Data Access Layer是相对独立的,所以 你还要确保你的DAL确实Load了关联数据。
    在LTS, 需要加DataLoadOptions, 在EF需要用.Include

    所以问题可能不在关联,而在其他。
    2009年6月9日 2:05
  • 我用的是LinqToSql,刚刚测试加External属性,可以关联取数据了,绑定datagrid后,编辑的窗口输入关联数据的字段更新,在datagrid中能反应出来,但不能更新到数据库,但主表是可以更新的.比如:

    姓名:张三
    公司名称:ABC

    我在编辑窗口把姓名改成:李四,公司名称改成:中国

    点更新后,方法PersonalDataSource.SubmitChanges();

    主表的姓名更新成功,但关联表的公司名称即还是ABC.也就是更新不成功

    我用以下的方法也不行,就是执行两个context的SubmitChanges.
    companyContext.SubmitChanges();
    personalContext.SubmitChanges();

    不知道什么原因.
    aaaa
    2009年6月9日 2:34
  • 经过跟踪,发现并没有执行关联实体的UPDATE方法.就是AddReference后的DomainContext.
    但我直接给主表UPDATE方法增加关联实体的UPDATE,也不行.如下:
    this.context.Companies.AttachcurrentPersonal.Company, originalPersonal.Company);

    不知道啥原因.
    aaaa
    2009年6月9日 3:11
  • 我刚试了一下,是可以的。

    你指的编辑窗口是什么?我直接在DataGrid里编辑就可以的。

    你单击更新的时候,可以通过查看一下domainContext.Entities.GetChanges();看看是否有更新。

    如果你多贴些code或许可以研究一下。或者给我发过来,我看一下。

    2009年6月10日 0:55
  • 我刚试了一下,是可以的。

    你指的编辑窗口是什么?我直接在DataGrid里编辑就可以的。

    你单击更新的时候,可以通过查看一下domainContext.Entities.GetChanges();看看是否有更新。

    如果你多贴些code或许可以研究一下。或者给我发过来,我看一下。


    昨天测试了一下,原来是Load方法的赋值字段有问题,导致更新的时候,出现.行已不存在或已更改,经修改后,就可以正常关联更新了.

    大家看看,是不是Silverlight3 beta的BUG.测试了好几次,都是这样的情况.
    http://social.microsoft.com/Forums/zh-CN/silverlightzhchs/thread/a34fca42-44de-4125-a19d-6a6a3581aaf3
    这个问题,不知道楼上的朋友,有没有遇到过.
    aaaa
    2009年6月10日 1:13