首页 新闻 会员 周边

多关联表实体类到底用那种方式设计?

0
悬赏园豆:100 [待解决问题]

数据库设计2张关联表   销售单主表和销售单明细   比方说主表 字段为 销售单ID,销售单单号  销售单明细表 字段为  销售明细ID,销售单ID,货号。

那么我该怎么设计实体类呢 (我没有用NHibernate等orm工具,sql语句拼接是自己设计的类生成的)

1.设计2个实体类,完全和表字段一致。

class  销售单

{

    private int _销售单ID

    private  string _销售单单号

  

public  int 销售单ID

{

  get {};

  set {};

}

public string 销售单ID

{

  get {};

  set {};

}

}

销售明细类省略

 

如果是这样设计,实体类如何与界面层和数据层沟通呢?比方说新增一张订单,要先处理销售单主表实体类,获得ID,再把id赋值给销售单明细实体类吗 ?,再处理销售明细实体,如果是mssql,从数据库上看,是先处理了一条insert 销售单主表记录,在处理100条inset销售单明细吗?(假设货号有100条)。这样的效率怎么样? 还是大家有更科学的处理办法?最好是能有示例,谢谢~

 

2 设计2个实体类,销售单增加<list>销售明细属性, 销售明细完全和表字段一致。

class  销售单

{

    private int _销售单ID

    private  string _销售单单号

  private   销售单明细   _产品明细

public  int 销售单ID

{

  get {};

  set {};

}

public string 销售单ID

{

  get {};

  set {};

}

public 销售单明细   产品明细

{

  get {};

  set {};

}

}

如果是这样设计,实体类如何与界面层和数据层沟通呢?

大肚弥勒的主页 大肚弥勒 | 初学一级 | 园豆:100
提问于:2011-10-27 11:27
< >
分享
所有回答(5)
0

最好的方法是用代码生成工具 如CodeSmith 按照你的表生成一套完整的solution,然后找一个表从web到data看下源码,然后你什么都明白了

失落小羊 | 园豆:58 (初学一级) | 2011-10-27 11:55

好的,非常感谢,我这几天先看看CodeSmith 。再次表示感谢。

支持(0) 反对(0) 大肚弥勒 | 园豆:100 (初学一级) | 2011-10-31 18:29
0

如果没有用ORM工具的话建议用第一种,这样好控制一些,效复杂的用存储过程做

如果用了ORM工具(NHibernate,EF)建议用第二种

artwl | 园豆:16736 (专家六级) | 2011-10-27 11:55

暂时还不会用ORM工具,正在向这个方向学习,谢谢~您讲的很有道理

支持(0) 反对(0) 大肚弥勒 | 园豆:100 (初学一级) | 2011-10-31 18:30
0

第一种简单一点,第二种可能看起来更像在操作一个对象一点,因为从业务上来说,一个销售单里应该包含有详单的。

第一种不需要先处理销售单主表实体类获取ID的,可以同时处理,ID由按规则生成,如果不要求像流水号一样有意义,可以直接取GUID,第二种,不知道你说的如何沟通是指什么。

LCM | 园豆:6876 (大侠五级) | 2011-10-27 17:00

这里的沟通最后的sql语句与类是如何变换的意思

支持(0) 反对(0) 大肚弥勒 | 园豆:100 (初学一级) | 2011-10-31 18:32
0

建议第二种~~

 

数据访问层可以采用ORM 

推荐EF

wlf | 园豆:254 (菜鸟二级) | 2011-10-28 09:00

请问orm是否很消耗效率呢?

支持(0) 反对(0) 大肚弥勒 | 园豆:100 (初学一级) | 2011-10-31 18:33

@大肚弥勒:

 相对纯粹的ado .net 会慢些

支持(0) 反对(0) wlf | 园豆:254 (菜鸟二级) | 2011-10-31 21:14
0

用实体类在关系型数据库系统不利于维护,当需求变更的时候要改数据库,又要改实体类,又要改SQL语句和相关逻辑。

霜天雪舞 | 园豆:214 (菜鸟二级) | 2011-10-28 09:46

恩,谢谢您的建议,我就是没有见过实体类开发的企业项目,所以想问问大家都是怎么处理的,做到心里有数

支持(0) 反对(0) 大肚弥勒 | 园豆:100 (初学一级) | 2011-10-31 18:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册