三层架构中,如何把在数据表视图中 不能映射到实体类

步步学LINQ to SQL:将类映射到数据库表
作者:IT168 罗江华
  (3)申明数据表  最后,你可以为每张数据表创建一个类型为Table的对象类集合。  通常,你可以先创建这些类,下面我们来看看这一创建过程。我们将创建三个类(Author, Book, 和Category)--每个类对应一张数据表。因此,我们将为每个类类型添加一个Table集合并将这些集合命名为一个有意义的名字。注意,为数据库表名对应的类或集合命名不是必须的。我们将在下一节了解如何为数据表指定名称。  using System.Data.L  using System.Data.Linq.M  namespace LINQDemo  {  [Database]  public class BookCatalog : DataContext  {  public BookCatalog( ) : base( ... );  public Table A  public Table B  public Table C  }  }&  2.将实体类映射到数据库表  为连接到应用程序的每张数据库表创建类对象。我们将以Book表为例子阐述这一实现过程。  (1)创建带有[Table]特性的类  创建一个特性为Table的Book类将其映射到对应的数据库表。  为数据库表的Name参数指定名称([Table( Name = &Books& )])。这里我们这样做是因为表的名称(Books)和我们的类名(Book)不同。如果它们相同,可以忽略该Name参数的设置。  using System.Data.Linq.M  namespace LINQDemo  {  [Table( Name = &Books& )]  public class Book{}  }&  (2)使用[Column( IsPrimaryKey = true )]特性添加一个字段作为表的主键。  如果你喜欢,你也可以为为其添加一个Column特性,这也是Book Catalog应用程序所采用的方式。  如果你的主键在数据库中设置成了Identity,那么需要添加一个参数IsDbGenerated = true。
相关阅读:
【内容导航】
第1页:第2页:
本文欢迎转载,转载请注明:转载自IT168 [
本文链接:
本文关键字:三层架构设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
25页1下载券25页1下载券10页1下载券3页¥1.006页¥2.004页1下载券8页1下载券2页免费12页1下载券7页2下载券
喜欢此文档的还喜欢99页2下载券70页免费20页免费80页1下载券100页1下载券
三层架构设计|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢& & & & &昨天,七期师兄师姐们给我们讲解了一下三层和三范式。
&&&&&&&& 关于三层:
&&&&&&&& 对于三层的理解,一直在一步步的加深之中,不论理解的对与错,至少现在和别人说三层,能说出一点点的皮毛,但是再往深一点说,就不会了。
&&&&&&&& 听了昨天的讲解,发现最难理解的其实并不是B层,也不是D层,更不是U层,而是实体层。
&&&&&&&& BLL层主管业务逻辑,也就是说和业务有关的放在B层。U层是表现层,主管和用户的互动,用户输入,以及向用户展示都是U层的事。D层为数据访问层,主管和数据库打交道。
&&&&&&&& 前些日子看了篇关于三层的文章,在他的文章里说验证是否为空等一系列放在B层。关于这个,仁者见仁,智者见智。有人认为只要涉及到判断,那么就应该放在B层,也有人认为,这个是与界面相关的,所以放在U层。
&&&&&&&& 放在B层的好处是什么呢?那就是U层的代码可以再少一点,在更换界面层的时候,新的U层只需要传值即可,这样的话B层就会变的特别臃肿。我感觉着也就是大家都说B层是最麻烦的原因了。
&&&&&&&& 我个人感觉最难理解的是实体层,这一层是“跳出三界外,不在五行中”。它不属于三层中的任何一层,但是三层每一层都与他关联。最初的理解是有多少个表,就最少有多少个实体类,每个实体类的属性为表的字段。
&&&&&& 慢慢的,觉得这样划分实体类是有问题的,因为涉及到多个表的时候,那么就返回不了实体类了,因而出现了基于视图创建实体类。宏哥的一句话更是点醒梦中人:其实你都可以将九个表的字段全部写到一个实体类里面。
&&&&&& 虽然大家都不会这样做,但是这个思想告诉我们,实体类并不是规定死的,他可以完全按照你的需要进行改造,怎么用更符合面向对象,就怎么用,没有那么多的条条框框。这也就是他“跳出三界外,不在五行中”的原因吧。
&&&&&& 而面对返回datatable,u或b层需要知道字段的问题,则是在实体层写一个参数为datatable类型的方法,那么了解字段的责任就交给了实体层,这样,就做到了u、b层与D层的解耦。
&&&&&& 我们画图的时候,有的人加了外观,昨天师姐问我们是否想过这些细粒度的包怎样对应粗粒度的包,这个其实并不太难,所以就不说了。下面附图再解释下个人对外观的理解吧(上篇中已经文字叙述了对外观的理解——):
&&&&&& 这次的举例为上下机实例,首先我们看一下外观带逻辑的图:
在这个图里,B层是基于U层写的,但是在B层差不多之进行了return类似的语句,相应的判断几乎没有,这些工作都交给了外观层来解决。外观是用来解耦的,这样其实并没有达到解耦的目的,昨天开会的时候,勇哥说解耦最好的方法就是接口,而这里外观提供的并不是一个接口,而是类似于B层的一个类。用了外观,就好像把B层架空了一样,跟外观层直接调用数据访问层的感觉差不多。
下面在看下外观没有逻辑的图:
(上图中在B层省去了其他的关联关系)由于检测卡号是否存在以及检查是否正在上机要重复使用,那么在B层将其抽象出来以达到复用的目的。在这里,相应的逻辑都存在于B层之中,B层做了自己应该做的,并没有交给外观,所以个人感觉虽然说可以将细粒度的包和粗粒度的包对应,但是是有区别的。
下面再说下外观存在的意义,如果没有外观,那么将会是下面的图:
这样,U层需要知道B层的就太多了,耦合性太高。我们的系统简单,一个上机窗体里面就两个主要功能,但是一个窗体上面内容多的话,那U层和B层的对应关系不是很乱了么?这时外观就出动了。
在应用外观时,我们不能将B层应该做的放到外观做,就好比你D层的代码写到传参等一切都继续了,就差cmd的execute,然后你返回一个cmd,让他在B层execute吧(可能不恰当,但是道理是相同的)。
对于设计模式的理解,任重而道远,在自己的机房收费系统里面所用的设计模式,除了抽象工厂加反射利于更换数据库外,其他的功能感觉都有点牵强。
本来要写成两篇的文章,写到了一起,大家一定读累了,再次感谢您的拜读。
下回说一下机房收费系统所用的设计模式。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:159450次
积分:5414
积分:5414
排名:第1705名
原创:134篇
评论:1742条
(1)(1)(4)(4)(4)(4)(4)(4)(4)(3)(4)(7)(3)(6)(5)(8)(4)(6)(4)(4)(4)(4)(5)(6)(8)(3)(1)(4)(2)(7)(1)(2)(1)(3)三层架构 MODEL,USER实体类和ROLE实体类,死循环问题
[问题点数:40分,结帖人zyc90]
三层架构 MODEL,USER实体类和ROLE实体类,死循环问题
[问题点数:40分,结帖人zyc90]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2014年12月 .NET技术大版内专家分月排行榜第三2014年10月 .NET技术大版内专家分月排行榜第三2014年9月 .NET技术大版内专家分月排行榜第三2014年1月 .NET技术大版内专家分月排行榜第三2013年12月 .NET技术大版内专家分月排行榜第三2013年10月 .NET技术大版内专家分月排行榜第三2013年5月 .NET技术大版内专家分月排行榜第三2011年9月 .NET技术大版内专家分月排行榜第三2011年2月 .NET技术大版内专家分月排行榜第三2010年2月 .NET技术大版内专家分月排行榜第三
2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2014年12月 .NET技术大版内专家分月排行榜第三2014年10月 .NET技术大版内专家分月排行榜第三2014年9月 .NET技术大版内专家分月排行榜第三2014年1月 .NET技术大版内专家分月排行榜第三2013年12月 .NET技术大版内专家分月排行榜第三2013年10月 .NET技术大版内专家分月排行榜第三2013年5月 .NET技术大版内专家分月排行榜第三2011年9月 .NET技术大版内专家分月排行榜第三2011年2月 .NET技术大版内专家分月排行榜第三2010年2月 .NET技术大版内专家分月排行榜第三
2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2014年12月 .NET技术大版内专家分月排行榜第三2014年10月 .NET技术大版内专家分月排行榜第三2014年9月 .NET技术大版内专家分月排行榜第三2014年1月 .NET技术大版内专家分月排行榜第三2013年12月 .NET技术大版内专家分月排行榜第三2013年10月 .NET技术大版内专家分月排行榜第三2013年5月 .NET技术大版内专家分月排行榜第三2011年9月 .NET技术大版内专家分月排行榜第三2011年2月 .NET技术大版内专家分月排行榜第三2010年2月 .NET技术大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。DAL数据库操作类一般方法
1.增(insert):
  insert数据。这个在BLL使用的时候,一般要先判断插入记录是否存在,配合isExist一起使用。
2.删(delete):
  全部删除;
  根据ID删除数据。要实现批量删除功能,可利用循环调用删除单个记录的方法来实现。
3.查(select):
  全部取出;
  根据ID查数据;
  根据某字段关键字查数据;
  根据日期查数据。
  查询方法最难把握,变化最多,特别是涉及多表查询的时候,更是复杂,如何才能有效提高查询效率,也是值得思考的事情。
4.改(update):
  根据ID修改数据。修改操作方法一定要按照实际需求来写,一般改的时候是传入整个实体类,但是这也造成了一定的不灵活性,有时候不一定整个实体类都要跟新,而只需要更新某些字段。因此,写update的时候一定要非常小心。
5.判断(isExist):
  判断某一记录是否存在。这个方法是必须的,因为insert数据的时候,有时候要看原来是否已存在相同记录。
以上就是一般情况下一个表格的DAL简单方法的概括。不过具体情况还要具体分析,最主要是不能跟实际情况脱节。
阅读(...) 评论()}

我要回帖

更多关于 修改数据表中某一列 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信