2012-09-24 37 views
0

我有一个3层C#应用程序,用表示层业务层和访问数据库的数据层,C#n层数据层的设计问题

我有从代表的数据库连接的数据层中的连接对象。 我有一种代表应用程序的用户的用户对象(即从用户表中的一行) 在业务层中存在对象的用户,

什么是实现保存,创建,用户对象上的删除功能的最佳途径, 它应该是通过连接对象上的某种数据连接器,即connection.userdataconnector.save(user),其中dataconnector允许访问用户功能(用户表),或者它应该通过用户对象上的功能,即User.Save();

目前的趋势是什么?

P.S.我正在使用SQLClient库,并看到许多使用数据连接器的MSDN文章。链接到执行你的答案源代码/示例应用程序,将不胜感激

+0

或者您可以使用像Dapper和DapperExtensions这样的轻量级框架。这些框架可以基于简单的POCO实体提供强大的实体映射和基本的CRUD实现。 – gustavodidomenico

回答

2

目前的趋势是使用ORM轻质ORM甚至ADO.NET根据您的应用程序有多复杂,但你可以使用:

  1. ADO.NET
  2. 重量轻ORM:DapperMassive
  3. ORM:Entity Framework,NHibernate。

如果您的应用程序很简单,只需处理CRUD操作,您可以使用(1)或(2)。但是,如果您的应用程序在业务上非常复杂,则应该使用ORM,它支持许多功能:工作单元,数据映射程序,延迟加载...您还可以使用另一个选项来使用NoSql替换传统数据库。

顺便说一句,术语不是在这种情况下是正确的,它应该被称为其中参考逻辑

+0

“但是如果你的应用程序在业务上非常复杂,你应该使用ORM,甚至使用NoSql。”是一个相当普遍的概念。所以我会提供一个反面概括...如果您的应用程序很小且很简单,那么选择哪种技术几乎与您的应用程序大而复杂无关。如果您的应用程序庞大而复杂,请仔细考虑您选择的技术并注意您与自己结婚的限制。 –

+0

感谢您的回答,我知道这些技术,但选择使用该系统。数据库中,我的问题是从设计和使用数据层和业务层以及数据如何与业务层交互或更新的人寻求更多基于设计的答案。但也许我会考虑转向EF。 –