强类型.net - > sql数据访问?

时间:2009-10-18 11:40:44

标签: .net orm data-access-layer

我知道我想要什么,但不确定名称和所需的工具,所以这里......

我有几个不同的sql表。

我想要一个工具,它将在我的.net项目中为每个表生成一个对象,每个列都是该对象的一个​​属性。 (即强类型,无数据表)

我希望能够在我的.net项目中调用select,insert,update和delete方法,并可能将一个对象(即'Person')传递给我将insert()方法插入到sql表中。< / p>

我不确定这是一个数据访问层,对象关系映射或linq到sql,还是两者的混搭。

任何建议表示赞赏。

3 个答案:

答案 0 :(得分:3)

LINQ to SQL,nHibernate以及任何其他ORM将完成您需要的所有操作。我相信如果你想进入ORM路线还有LINQ to nHibernate。就个人而言,我已经单独使用LINQ to SQL,使用LINQ to SQL Classes设计器来生成我的实体。我更喜欢使用IQueryable扩展方法而不是LINQ语法,但这更像是个人偏好。但是,您需要使用数据上下文方法进行插入和删除。

答案 1 :(得分:2)

Linq-to-SQL将允许您将数据库表拖放到Visual Studio中的项目中,并创建您正在寻找的强类型模型。

它有局限性 - 它不会做多对多的关联(或者更确切地说,它确实如此,但是你的关联表最终将成为你模型中一个相当奇怪但必要的部分),而视觉设计师并不是在反映对底层数据库的更改方面特别友好。

也就是说,它是轻量级的,它很简单,它创建了部分类,因此您可以添加自己的逻辑和方法,而不会破坏自动生成的模型,并且它可以工作。

NHibernate最大的优势在于它不需要在数据库模式和域模型之间建立1:1的对应关系 - 它将一个类映射到多个表,将多个列映射到单独的实体,依此类推。这非常有用,但显然在复杂性方面需要付出代价,而且听起来你现在可以没有这种额外的复杂性。

答案 2 :(得分:1)

您想要的是Active Record pattern的实现。

有许多ORM会为您提供实施,包括但不限于:

为了选择ORM,你应该看看这个问题,因为这个问题之前已被多次提出并回答过:

NHibernate, Entity Framework, active records or linq2sql

您也可以构建自己的Active Record实现,但除了学习练习之外,这还不值得。