none
如何实现主从表的实体类 RRS feed

  • 问题

  • 开发中经常遇到这样的问题:一个销售订单有3张表,

    第一张,主表,放订单编号,单据日期等信息

    第二张,从表,订单里的商品明细等信息

    第三张,从表的从表,放每个商品对应的几种颜色数量

    总的来说是,一对多,再对多的关系

    因为网络传输性能问题,我准备放弃用DataSet 来更新数据库,采用实体类来更新数据库,但是我不知道如何用实体类来构建这种关系,并且要维护每行数据的状态,因为用户可能修改了一张订单,原来有10行数据,用户删除了3行,新增了2行,修改了4行,最终提交到业务逻辑层的时候,要有这些状态数据库才能知道该如何操作。

     


    相信自己,坚持下去。
    2011年3月16日 3:49

答案

  • 开发中经常遇到这样的问题:一个销售订单有3张表,

    第一张,主表,放订单编号,单据日期等信息

    第二张,从表,订单里的商品明细等信息

    第三张,从表的从表,放每个商品对应的几种颜色数量

    总的来说是,一对多,再对多的关系

    因为网络传输性能问题,我准备放弃用DataSet 来更新数据库,采用实体类来更新数据库,但是我不知道如何用实体类来构建这种关系,并且要维护每行数据的状态,因为用户可能修改了一张订单,原来有10行数据,用户删除了3行,新增了2行,修改了4行,最终提交到业务逻辑层的时候,要有这些状态数据库才能知道该如何操作。

     


    相信自己,坚持下去。

    如果您使用 Entity Framwork 来创建实体     可以用导航属性来表达主从关系。

    而且 EF的 context 内部自动维护状态  您不需要额外进行处理。

     dataset 如果用好   只把需要更新的部分拿出来上传  其数据量也很少。

     


    入了ipad,最近用ipad上论坛
          这样是可以解决问题,但是成本也不小呀,我在把服务器返回的结果集传回客户端,再在客户端反序列化以后转为DATASET ,更新时也要转一次,能不能直接用实体类控制呢?而且我的项目要支持多种数据库的,LINQ就不用考虑了
    相信自己,坚持下去。

    首先 EF本身支持很多数据库 

    其次 dataset因为是xml内核 其 序列化反序列化消耗极低。

    不知道您是否在用强类型化的dataset (首先出现在vs2005 )。这种dataset作为webservice参数和返回的话 就和传递实体效果差不多。


    入了ipad,最近用ipad上论坛
    • 已标记为答案 Paul Zhou 2011年3月23日 2:23
    2011年3月16日 16:13
    版主

全部回复

  • 这个在sqlserver 2008 中 提供一个merge关键字 可以在一个语句中完成新增,删除,修改等操作。

    至于如何维持实体关系,可以通过对象的主键来控制。但是这个可能需要自己写一些方法来检查。

     


    family as water
    2011年3月16日 5:50
  • 开发中经常遇到这样的问题:一个销售订单有3张表,

    第一张,主表,放订单编号,单据日期等信息

    第二张,从表,订单里的商品明细等信息

    第三张,从表的从表,放每个商品对应的几种颜色数量

    总的来说是,一对多,再对多的关系

    因为网络传输性能问题,我准备放弃用DataSet 来更新数据库,采用实体类来更新数据库,但是我不知道如何用实体类来构建这种关系,并且要维护每行数据的状态,因为用户可能修改了一张订单,原来有10行数据,用户删除了3行,新增了2行,修改了4行,最终提交到业务逻辑层的时候,要有这些状态数据库才能知道该如何操作。

     


    相信自己,坚持下去。

    如果您使用 Entity Framwork 来创建实体     可以用导航属性来表达主从关系。

    而且 EF的 context 内部自动维护状态  您不需要额外进行处理。

     dataset 如果用好   只把需要更新的部分拿出来上传  其数据量也很少。

     


    入了ipad,最近用ipad上论坛
    • 已建议为答案 liyulai 2013年6月14日 5:33
    2011年3月16日 9:47
    版主
  • 开发中经常遇到这样的问题:一个销售订单有3张表,

    第一张,主表,放订单编号,单据日期等信息

    第二张,从表,订单里的商品明细等信息

    第三张,从表的从表,放每个商品对应的几种颜色数量

    总的来说是,一对多,再对多的关系

    因为网络传输性能问题,我准备放弃用DataSet 来更新数据库,采用实体类来更新数据库,但是我不知道如何用实体类来构建这种关系,并且要维护每行数据的状态,因为用户可能修改了一张订单,原来有10行数据,用户删除了3行,新增了2行,修改了4行,最终提交到业务逻辑层的时候,要有这些状态数据库才能知道该如何操作。

     


    相信自己,坚持下去。

    如果您使用 Entity Framwork 来创建实体     可以用导航属性来表达主从关系。

    而且 EF的 context 内部自动维护状态  您不需要额外进行处理。

     dataset 如果用好   只把需要更新的部分拿出来上传  其数据量也很少。

     


    入了ipad,最近用ipad上论坛
          这样是可以解决问题,但是成本也不小呀,我在把服务器返回的结果集传回客户端,再在客户端反序列化以后转为DATASET ,更新时也要转一次,能不能直接用实体类控制呢?而且我的项目要支持多种数据库的,LINQ就不用考虑了
    相信自己,坚持下去。
    2011年3月16日 15:32
  • 开发中经常遇到这样的问题:一个销售订单有3张表,

    第一张,主表,放订单编号,单据日期等信息

    第二张,从表,订单里的商品明细等信息

    第三张,从表的从表,放每个商品对应的几种颜色数量

    总的来说是,一对多,再对多的关系

    因为网络传输性能问题,我准备放弃用DataSet 来更新数据库,采用实体类来更新数据库,但是我不知道如何用实体类来构建这种关系,并且要维护每行数据的状态,因为用户可能修改了一张订单,原来有10行数据,用户删除了3行,新增了2行,修改了4行,最终提交到业务逻辑层的时候,要有这些状态数据库才能知道该如何操作。

     


    相信自己,坚持下去。

    如果您使用 Entity Framwork 来创建实体     可以用导航属性来表达主从关系。

    而且 EF的 context 内部自动维护状态  您不需要额外进行处理。

     dataset 如果用好   只把需要更新的部分拿出来上传  其数据量也很少。

     


    入了ipad,最近用ipad上论坛
          这样是可以解决问题,但是成本也不小呀,我在把服务器返回的结果集传回客户端,再在客户端反序列化以后转为DATASET ,更新时也要转一次,能不能直接用实体类控制呢?而且我的项目要支持多种数据库的,LINQ就不用考虑了
    相信自己,坚持下去。

    首先 EF本身支持很多数据库 

    其次 dataset因为是xml内核 其 序列化反序列化消耗极低。

    不知道您是否在用强类型化的dataset (首先出现在vs2005 )。这种dataset作为webservice参数和返回的话 就和传递实体效果差不多。


    入了ipad,最近用ipad上论坛
    • 已标记为答案 Paul Zhou 2011年3月23日 2:23
    2011年3月16日 16:13
    版主