数据库设计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 {};
}
}
如果是这样设计,实体类如何与界面层和数据层沟通呢?
最好的方法是用代码生成工具 如CodeSmith 按照你的表生成一套完整的solution,然后找一个表从web到data看下源码,然后你什么都明白了
好的,非常感谢,我这几天先看看CodeSmith 。再次表示感谢。
如果没有用ORM工具的话建议用第一种,这样好控制一些,效复杂的用存储过程做
如果用了ORM工具(NHibernate,EF)建议用第二种
暂时还不会用ORM工具,正在向这个方向学习,谢谢~您讲的很有道理
第一种简单一点,第二种可能看起来更像在操作一个对象一点,因为从业务上来说,一个销售单里应该包含有详单的。
第一种不需要先处理销售单主表实体类获取ID的,可以同时处理,ID由按规则生成,如果不要求像流水号一样有意义,可以直接取GUID,第二种,不知道你说的如何沟通是指什么。
这里的沟通最后的sql语句与类是如何变换的意思
建议第二种~~
数据访问层可以采用ORM
推荐EF
请问orm是否很消耗效率呢?
@大肚弥勒:
相对纯粹的ado .net 会慢些
用实体类在关系型数据库系统不利于维护,当需求变更的时候要改数据库,又要改实体类,又要改SQL语句和相关逻辑。
恩,谢谢您的建议,我就是没有见过实体类开发的企业项目,所以想问问大家都是怎么处理的,做到心里有数