今天尝试用.Net3.5架构网站,发现一个问题,使用LINQ操作数据库,LINQ操作属哪层呢?

假如光使用一种数据库,那么把LINQ放在数据层是没有问题,然后再对LINQ数据进行包装,就可以使用了。但是如果使用工厂进行多种数据库部署的话,问题来了,如果把LINQ放在数据层,那么IDAL将无法得到Model类型,工厂将无法返回数据类型。因为数据层肯定要引用IDAL,实现IDAL定义的接口,而同样工厂在配置取得的结构恰恰是IDAL定义的接口。也就是说IDAL至少同时被Factory和数据层引用,但是IDAL必须引用Model以便能使用对象。问题就出在LINQ的Model恰恰被封装在了*.dbml文件里了。

经过一番思考,我认为*.dbml文件只能被封装在Model层中,虽然带来了不良反应——任何层都有直接操作数据的能力。但是实在是没有办法的事情,要么就只能另外再定义一次Model,但那样已经带来了大量的额外工作量。

大家有什么看法呢?

DLINQ *.dbml文件该属于哪一层相关推荐

  1. Dbml文件提取建表TSql-CodeSmith

    在昨天一个大学师弟,他问我能不能将LinqToSql文件转化为创建表的TSql语句,他是刚开始学习.NET,所以在网上下些示例看,但苦于没有数据库.所以就有了这一篇博客,作为我的Code生成技术的Co ...

  2. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范...

    一 DBContext的构造方法,方法的重载 二 DBContext实例中,表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属 ...

  3. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...

    一 DBContext的构造方法,方法的重载 二 DBContext实例中,表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属 ...

  4. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...

    一 DBContext的构造方法,方法的重载 二 DBContext实例中,表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属 ...

  5. 光脚丫学LINQ(025):如何验证DBML和外部映射文件

    视频演示:http://u.115.com/file/f2604631a 此演示视频主要演示了如下两方面的内容: 1.如何使用VS提供的架构文件来验证DBML文件和XML外部映射文件. 2.如果计算机 ...

  6. 解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示The operation could not be completed. 的问题。...

    环境:XP sp3, Visual Studio2008 sp1 错误现象:打开.dbml(LINQ) 文件,提示 "The operation could not be completed ...

  7. c++:文件操作1 文件的打开

    在程序中,要使用一个文件,先要打开文件后才能读写,读写完后要关闭.创建一个新文件也要先执行打开(open)操作,然后才能往文件中写入数据.C++ 文件流类有相应的成员函数来实现打开.读.写.关闭等文件 ...

  8. 编码,深浅拷贝和文件操作

    三.再谈编码 小数据池,  常量池, id() 查看变量的内存地址 is和== is 判断内存地址是否一致 == 判断内容是否一致 小数据池的作用: 为了快速的创建字符串对象, 可以减少内存的浪费 用 ...

  9. java递归url目录_Java递归实现某个目录下所有文件和目录

    import java.io.File; import java.util.ArrayList; public class Test1// 实现打印某个目录下的所有文件和目录,要目录在上,文件在下,每 ...

最新文章

  1. 【转】NuGet.org 无法访问的解决方法
  2. 加载数据时先显示小圆圈不显示内容
  3. ABP文档 - Javascript Api - AJAX
  4. 1.10 编程基础之简单排序_10 单词排序
  5. Android 实现手写板技术
  6. mysql用户已存在怎么回事_mysql – 我的数据库用户存在,但我仍然得到...
  7. 【mysql】悲观锁和乐观锁的实现原理
  8. 每天一道剑指offer-翻转单词顺序列
  9. JAVASSM框架面试题
  10. 这是我经历过最惨的转正答辩了
  11. vue.js 获取当前屏幕的宽度_js获取浏览器和屏幕的各种宽度高度
  12. 基于TADK的SQLI检测
  13. 百度开放平台-快递物流解决方案
  14. java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
  15. h5页面 判断是在微信打开还是在浏览器打开
  16. 2023 最新 抖音AI换脸表情包小程序变现玩法项目
  17. Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
  18. Springboot Application 集成 OSGI 框架开发
  19. 【jquery】删除节点 添加节点 找兄弟节点
  20. iOS 刻度尺、iOS 测量尺、iOS开发可移动的尺子、纯代码实现

热门文章

  1. 域名判断真实ip地址
  2. JAVA SE学习day14:XML语言
  3. vue 加载时掉用mounted_Vue实例中生命周期created和mounted的区别详解
  4. Android 2D游戏引擎AndEngine配置环境
  5. php滑动换视频,php工具类之【视频变换类】
  6. 封装 继承 多态_Java基础知识——封装、继承、多态
  7. 机器学习算法_五分钟了解机器学习十大算法
  8. Logistic Regression(逻辑回归) +python3.6(pycharm)实现
  9. myeclipse 如何显示序号
  10. 研究人员利用非线性原理为机器人创造出类似昆虫的步态,脑机接口也可以使用...