none
使用RIA Services 怎样实现关联实体同时更新到数据库?且支持事务. RRS feed

  • 问题

  • 如两个实体:
    public class Department
    {
         public string DepartmentName {get; set;}
    }

    public class Employee
    {
        public string Name {get; set;}
        public Department Department {get;set;}
    }

    我想在新增或更新EMPLOYEE表的同时,能更新Department表,比如,可以更新部门名称DepartmentName.
    aaaa
    2009年6月6日 10:34

答案

  • 用触发器,这样的话,整个程序结构都搞乱了.我在RIA SERVICES的OverView PDF中看到有这么一段.

    不过文章里都是英文,不太懂.不知道谁能更好的解释一下.
    在  5.7   Transactions  这个章节

    public override void Submit(ChangeSet changeSet) {

                using (var tx = new TransactionScope(

                    TransactionScopeOption.Required,

                    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })

                    ) {

                    // call to base to process the changeset within

                    // our transaction scope

                    base.Submit(changeSet);

     

                    // complete the transaction

                    tx.Complete();

                }

            }


    aaaa
    2009年6月8日 8:52

全部回复

  • 你好,
    我觉得可以用数据里的触发器来做,你有没有试过呢?


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2009年6月8日 6:56
    版主
  • 用触发器,这样的话,整个程序结构都搞乱了.我在RIA SERVICES的OverView PDF中看到有这么一段.

    不过文章里都是英文,不太懂.不知道谁能更好的解释一下.
    在  5.7   Transactions  这个章节

    public override void Submit(ChangeSet changeSet) {

                using (var tx = new TransactionScope(

                    TransactionScopeOption.Required,

                    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })

                    ) {

                    // call to base to process the changeset within

                    // our transaction scope

                    base.Submit(changeSet);

     

                    // complete the transaction

                    tx.Complete();

                }

            }


    aaaa
    2009年6月8日 8:52
  • 我猜你是要实现自己的Data Access Layer, 如果你使用默认支持的DAL Framework,比如 Linq To Sql or Linq to Entity Framework, 你就会发现这些关联是通过Attribute来实现的。
    你需要做类似的关联,同时在你的MetaData中要用[Include]来告诉Framework Serialization.

    2009年6月8日 22:35
  • 我猜你是要实现自己的Data Access Layer, 如果你使用默认支持的DAL Framework,比如 Linq To Sql or Linq to Entity Framework, 你就会发现这些关联是通过Attribute来实现的。
    你需要做类似的关联,同时在你的MetaData中要用[Include]来告诉Framework Serialization.


    嗯,我用了External或者Include后,生成的代码有关联,但是在更新的时候,调试的时候,总提示关联的那个类没有实现Edit Operation方法,但关联类得确就实现了.
    aaaa
    2009年6月9日 1:31
  • 两个Entity都实现了 Update /Insert /Delete 方法了吗?

    2009年6月9日 1:59
  • 两个Entity都实现了 Update /Insert /Delete 方法了吗?


    是的,单独的实体操作是没有问题的.但结果起来关联更新,就不行了,只能更新主表的.
    aaaa
    2009年6月9日 2:45
  • 中文的MSDN文档里已经有了

    http://msdn.microsoft.com/zh-cn/library/ee707364(v=vs.91).aspx

    你的答案是正确的。


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年11月14日 6:20
    版主