2010-07-14 136 views
0

...它叫什么?直接从数据库查询构建的业务对象

更详细说明:对于我的应用程序,我创建了一个很好的业务模型来处理内存中的对象。它的存储和视图是不可知的。现在,对于存储层,有一个数据库:我将构造SQL查询(越少越好),选择/连接等等,我需要从相关表中获得所有数据。一种“中间层”采用查询结果并构建具有所有关系的业务对象。

问题:你称这种方法是什么?什么是最佳实践?

这发生在.NET C#项目中,但与此设计问题无关。

(我发现问题441532是非常相似的,但我很感兴趣,更多的设计输入)

注:我不走ORM方法依赖于在执行此操作自动工具,因为应用程序需要只从相对较大的数据库中选择数据。

回答

1

我认为它被称为ORM或对象关系映射。

NHibernate就是这样一个例子。

+0

不,我不是建立一个1:1的数据库层(一个表中的一个类)。我想直接从我从几个(加入)SQL查询中得到的行构建业务对象。我完全忽略了ORM方法。 – 2010-07-14 23:08:35

+0

如果你有一个数据库中的数据,并希望在域对象中使用它,你正在做ORM。它被称为行数据网关,表数据网关,活动记录,数据映射器,DAO等。 – 2010-07-14 23:17:11

+0

ORM并不意味着每个类一个表。我认为你已经倒过来了:你可以从现有的模式生成对象,或者创建一个领域模型,然后是表格。从你决定写的任何查询中创建任意对象完全是另一种动物。 – duffymo 2010-07-14 23:20:23

0

有不同的ORM工具。 Linq to SQL做1:1,这不是你想要的。

你在说什么与Domain Driven Design重叠,其中你的设计由域驱动,而不是数据库。

在这种情况下,如果您使用的是关系数据库,您仍然需要一个ORM,而像Entity Framework和NHibernate这样的ORM允许您以任何您想要的方式灵活地将您的实体“映射”到您的数据库, ,如果您的数据库因任何原因需要更改,或者实体必须更改,无论出于何种原因,您需要更改的只是中间的“映射”层。

看看fluent nhibernate

相关问题