我需要一些关于创建DAL的指导。我试图找到一些好的资源,但没有找到任何特定于我需要的东西。
我有一个稍微复杂的数据库布局,有一些一对多关系和一对多对多关系。我在网上看到的大多数文章参考实体框架都有助于ORM,但遗憾的是我无法使用这个,因为我无法使用reflection / emit
目前,我有一个类完全代表我的数据库中的每个表。然后我有一个通用的存储库,所以我可以操作这些类。最重要的是,我有一个手动实现关系的另一层(服务层??)。一个客户可能有多个地址,因此Customer对象将具有一个地址列表。这是执行计算/操作的层。当对这些关系对象之一进行更改时,服务层处理转换为表对象并通过存储库提交更新。
几个问题:
非常感谢任何适用文章的链接。
对缺乏代码表示歉意。当我下次在电脑上时,会用例子更新。
编辑:要明确这是针对Windows Phone& winrt为本地sqlite数据库。我使用一个简单的orm将一个表映射到一个对象,但是,没有发射我不能有自动生成的复杂对象,因此我不得不在简单的表表示上创建另一个层来解释这个问题。
此致
答案 0 :(得分:0)
我有一个稍微复杂的数据库布局,有一些一对多关系和一对多对多关系。
啊,我有一个稍微复杂的菜单来做饭。鸡蛋和培根。
曾见过一个稍微复杂的数据库?让我们说200个tabbles,也许600个关系?请。一对一对多,一对多对多都是 - 但并不复杂。
我已经看过在线参考实体框架来帮助ORM但不幸的是我不能使用它,因为我不能 使用reflection / emit
鉴于.NET框架中包含一个稍微过时的实体框架版本 - 因此安装在GAC中并绕过安全性 - 为什么你认为它无法使用反射或发射?
现在回答:
1:没有。这些都没有层次。这就是你的ORM。我称之为数据访问和对象管理层。
2:当它们是退化的业务对象时,它们只被称为DTO - 没有逻辑(业务,不是数据访问)。否则显然他们不是数据访问对象。 NOw poco - 你甚至不知道这个词是什么意思吗?普通的旧C#对象 - 即不从基类继承。
3:取决于。
4:没有。你不使用反射/发射的论证很弱 - 这是一个温和的说法。你是你的头脑。我确实维持了商业ORM一段时间,在我生命中所做的所有事情中,这可能是最复杂的软件。有一个错误的做法,你太胖了恕我直言这样做,可能会做一个非常糟糕的情况,并花费大量的时间试图解决其他人已经解决的问题 - 没有任何实际的收获。动态sql生成会给你白色的heairs,或者只能处理非常基本的元素。你可以更好地花时间找出你不能使用反射或发出字节码的原因....
文章....嗯。请参阅我的参考手册:Scott Ambler的“构建对象应用程序” - 我相信您可以在互联网上找到它,例如在亚马逊。