送分了[关于项目架构的N多问题.不弄清楚不罢休]
Table Module与ADO.NET中的类型化的DataSet有什么联系?
如果我的一个项目的数据访问层用Table Module(强类型的DataSet)来做,那我应该如何做?如何加入事务控制?这与面向接口编程相违背吗?这样暴露了数据结构,会有什么影响?那应该如何解决?
在分层的项目中应该如何确定是用DomainModel还是TableModule
来表示业务逻辑?
业务逻辑到底是放在数据层(存储过程)还是Business中?
问题点数:100、回复次数:48Top
1 楼lxm174(眯眯)回复于 2006-12-26 18:00:28 得分 0
自己顶.今晚10点之前都在.Top
2 楼Zine_Alone(☆小飞☆)回复于 2006-12-26 18:05:23 得分 0
具体结合实际来考虑好些.
1.确定你为什么要建立这么一个框架.
2.结合现状,权衡该框架的大小,复杂度,效率,性能..(强类型DataSet效率较低)
Top
3 楼lxm174(眯眯)回复于 2006-12-26 18:15:40 得分 0
谢谢二楼
继续顶.Top
4 楼lxm174(眯眯)回复于 2006-12-26 18:22:53 得分 0
现在基于.NET 的ORM框架有没得用Table Module的?
能不能详细地说说在.NET中Table Module应该怎么样来设计?
我看了ASP.NET Starter Kit中的smallbusiness这个项目,
他里面的DAL层完全是用类型化的DataSet来做的.
我感觉这样太紧密了,如果自己想实现一些其它的东西,很难下手.比如上面说的事务控制.还有这样使得数据访问层与表示层是紧偶合的.
如果用这种方式来做,那还有比较好的方案吗?
Top
5 楼Zine_Alone(☆小飞☆)回复于 2006-12-26 18:28:59 得分 0
个人比较喜欢用反射的机制.仅供参考.
|
DALBase(including Transaction,base Access....) | Web
|| |====================
SubDALBase(project level) <=======| ||
|| || || | BLL
BusinessDAL BusinessDAL BusinessDAL |
|| || ||
------------------------------------------------------|
class---table |
attribute--column |
Customer method |
Top
6 楼Zine_Alone(☆小飞☆)回复于 2006-12-26 18:30:34 得分 0
倒,画歪了.....
大致还是一样 Web--BLL--DAL(dal部分和上图纵向所示一致)Top
7 楼lxm174(眯眯)回复于 2006-12-26 18:48:36 得分 0
我想我在概念上这方面的东西还没理解透.
DomainModel,对应的是业务实体,如PetShop中的Model
TableModule,涉及到ORM,如果自已去写,那很麻烦.强类型的DataSet,郊率?,可扩展性?可是他可以减少工作量.用现成的框架?我看了一下Websharp,可是看得不太明白.
Zine_Alone这位朋友说的模型是DomainModel吧Top
8 楼Zine_Alone(☆小飞☆)回复于 2006-12-26 19:02:48 得分 0
和DomainModel类似,具体看BLL如何处理.Top
9 楼lxm174(眯眯)回复于 2006-12-26 19:09:30 得分 0
我现在的感觉和开始还是一样,迷糊Top
10 楼lxm174(眯眯)回复于 2006-12-26 19:12:20 得分 0
我是想把自定义类与类型化的数据集相结合,各发挥各的优势.
非常感谢Zine_Alone朋友的支持Top
11 楼mail_ricklee(NickLee)回复于 2006-12-26 19:59:52 得分 0
NickLee.ODRM
http://www.cnblogs.com/mail-ricklee/archive/2006/12/25/602555.html
自定义类,数据集,Hashtable互相结合Top
12 楼lxm174(眯眯)回复于 2006-12-26 20:06:56 得分 0
mail_ricklee(NickLee这位朋友,NickLee.ODRM我今天下午刚下载下来,可是太麻烦,得发些时间来研究
能说说思路吗?Top
13 楼lxm174(眯眯)回复于 2006-12-26 21:57:37 得分 0
今晚上休息了,明天继续顶.Top
14 楼lxm174(眯眯)回复于 2006-12-27 10:40:46 得分 0
刚起来继续顶.Top
15 楼truecoffeefox(咖啡狐)回复于 2006-12-27 11:35:06 得分 0
根据自己的项目要求情况进行分解
不要为了设计而进行设计
orm框架是很方便,但是很沉重,对于一些轻量级的业务不实用
我做的和petshop差不多
DBUtility负责数据库存取,用的就是微软的那个Data Applicatuon Bolck
DAL拼凑字符串给DBUtility,它通过IDAL暴露给调用者,通过一个工厂实例化
BLL层由于逻辑简单到没有逻辑,就没有再对他进行抽象,直接同UI层耦合Top
16 楼truecoffeefox(咖啡狐)回复于 2006-12-27 16:29:25 得分 0
……这个问题不是很好?没人感兴趣Top
17 楼lxm174(眯眯)回复于 2006-12-27 20:02:49 得分 0
谢谢truecoffeefox这位朋友.
我继续顶起Top
18 楼midymidy()回复于 2006-12-28 15:51:08 得分 0
支持Top
19 楼midymidy()回复于 2006-12-28 15:51:17 得分 0
帮顶Top
20 楼midymidy()回复于 2006-12-28 15:51:22 得分 0
upTop
21 楼lxm174(眯眯)回复于 2006-12-28 19:09:35 得分 0
谢谢.楼上的,今天出去了,继续顶Top
22 楼lxm174(眯眯)回复于 2006-12-29 10:24:36 得分 0
继续顶Top
23 楼wuhuabucai(混乱)回复于 2006-12-29 11:11:56 得分 0
继续顶Top
24 楼midymidy()回复于 2006-12-29 13:33:26 得分 0
支持Top
25 楼midymidy()回复于 2006-12-29 13:33:39 得分 0
帮顶Top
26 楼midymidy()回复于 2006-12-29 13:33:48 得分 0
upTop
27 楼jonescheng(小块头无大智慧)回复于 2006-12-29 14:03:20 得分 0
建议自己打开源代码比如DUWAMISH或者PETSHOP自己调试,,,
多弄几遍了在看概念Top
28 楼lxm174(眯眯)回复于 2006-12-29 20:32:04 得分 0
谢谢各位,该看的我都看了.可还是有点迷糊
在顶Top
29 楼honkerhero(做事先做人)回复于 2006-12-30 10:32:30 得分 0
类型化DataSet其实就是一个类,他的CS文件是自动生成的一个可序列化的类
事务是跟数据库连接相关的,和用不用DataSet没有任何关系
conn.BeginTran..()//这是起事务,它返回一个事务对像
你只要在更新不同表的,把这个连接传下去就可以了,全部更新完以后再提交或回滚,他们就在一个事务里了
Top
30 楼honkerhero(做事先做人)回复于 2006-12-30 10:35:08 得分 0
数据层你可以封装的,业务逻辑是跟表相关的,可以单做,参考一个微软的标准7层,你可能会更清楚一点,层次不是固定,看你的设计了Top
31 楼midymidy()回复于 2006-12-31 08:54:49 得分 0
很多高人Top
32 楼midymidy()回复于 2006-12-31 08:54:56 得分 0
帮顶Top
33 楼midymidy()回复于 2006-12-31 08:55:07 得分 0
多多学习Top
34 楼lxm174(眯眯)回复于 2006-12-31 23:58:52 得分 0
先谢谢各位的指点.并祝大家元旦快乐,
类型化的DataSet只不过是用工具自动生成了CS文件代码,这确实是,我前几天也看了.
如果数据访问层是用他做成的,那基本上是不用写操作数据的代码了.可这样的话,我不知道如何加入自己的代码,比如说上面说的事务控制,当操作数据的时候,只要实例化一个相关的表适配器后,调用相关的方法就可以了.例如:
//Northwind是一个强类型的DataSet,
//ProductsTableAdapter是Northwind中的一个表适配器
ProductsTableAdapter productsAdapter = new ProductsTableAdapter();
//ProductsRow1 是ProductsTable的行的集合,是一个类
productsAdapter.Update(ProductsRow1);
//GridView1.DataSource = productsAdapter.GetProductsByCategoryID(1);
//GridView1.DataBind();
这样的话根本就无法实现自己的代码.他内部的Connection都是私有的.
这样应该怎么办呢?Top
35 楼lxm174(眯眯)回复于 2007-01-01 00:12:36 得分 0
今天睡觉去了,明年天继续Top
36 楼lxm174(眯眯)回复于 2007-01-02 11:22:18 得分 0
继续顶Top
37 楼zuo_hy(2007--my year)回复于 2007-01-03 09:54:24 得分 0
帮你顶....8错的小伙子..Top
38 楼zuo_hy(2007--my year)回复于 2007-01-03 09:55:08 得分 0
msxml3.dll 错误 '8007000e'
存储空间不足,无法完成此操作。
/Expert/function/Topic_Node_Reply.asp,行 25
-------------------------------------------------------------------------------------
妈D,贴都回不了....Top
39 楼zuo_hy(2007--my year)回复于 2007-01-03 09:55:29 得分 0
msxml3.dll 错误 '8007000e'
存储空间不足,无法完成此操作。
/Expert/function/Topic_Node_Reply.asp,行 25
Top
40 楼lxm174(眯眯)回复于 2007-01-03 17:54:37 得分 0
郁闷.继续顶Top
41 楼midymidy()回复于 2007-01-04 10:20:02 得分 0
帮顶Top
42 楼midymidy()回复于 2007-01-04 10:20:08 得分 0
支持Top
43 楼midymidy()回复于 2007-01-04 10:20:15 得分 0
学习Top
44 楼honkerhero(做事先做人)回复于 2007-01-04 12:21:16 得分 0
你的dataadapter在构造的时候不需要CONN?
dataadapter.select(insert,update,delete)command.connection也可以取到连接啊Top
45 楼midymidy()回复于 2007-01-04 13:15:41 得分 0
谢谢接分Top
46 楼midymidy()回复于 2007-01-04 13:15:51 得分 0
再次支持Top
47 楼midymidy()回复于 2007-01-04 13:15:58 得分 0
帮顶Top
48 楼lxm174(眯眯)回复于 2007-02-12 14:44:21 得分 0
最近不在学校了。上网不方便了。继续顶Top




