![]() |
1
1
我对NHibernate的经验是,虽然它有很多功能和非常高的性能,但您最终需要成为NHibernate专家才能解决一些意外的行为。通过阅读亲NHIBERNATE的答案并查看
确切地说明了我的意思。 我所做的是创建一个基本类,这个基本类在某种程度上是根据ActiveRecord模式建模的,我从继承的类继承并用将其附加到存储过程的属性标记继承的类,这些属性分别用于选择、插入、更新和删除。基类使用反射来读取属性并将类的属性值赋给sp参数,在select()的情况下,将结果sqldatareader的列值赋给泛型列表的属性。 这就是dataObjectBase的外观:
这是从中派生的数据类的一个示例:
我知道我似乎在重新设计方向盘,但我发现的所有库要么过于依赖其他库(例如ActiveRecord+NHibernate,这是一个很接近的秒),要么过于复杂,无法使用和管理。 我制作的库非常轻(可能有几百行c),除了为参数赋值和执行sp之外,它什么也不做。它还可以很好地生成代码,所以最终我希望不会编写数据访问代码。我还喜欢它使用一个类实例而不是静态类,这样我就可以将数据传递给查询,而不必使用一些笨拙的条件集合或HQL。select()的意思是“变得更像我”。 |
![]() |
2
1
对我来说,最适合的是一个非常简单的概念——使用DAO类定义和反射创建填充和保存它们所需的所有SQL。这样就没有映射文件,只有简单的类。我的DAO需要一个实体基类,所以它不是POCO,但这并不困扰我。它支持任何类型的主键,无论是单标识列还是多列。 |
![]() |
3
0
如果您的DAL被写到一个接口上,那么切换到nhibernate或其他可编译的东西会容易得多(我更喜欢流利的nhibernate,但是我离题了)。那么,为什么不花时间重构DAL以使用接口,然后使用NH或您选择的ORM编写新的实现呢? |
![]() |
4
0
在最近的项目中,我们已经停止编写单独的DAL。 相反,我们使用对象关系映射器(在我们的实例实体框架中)。然后,我们让业务层直接针对ORM进行编程。 在某些情况下,这节省了我们90%以上的开发工作。 |
![]() |
5
0
我的第一步是破解一个15克洛克怪物的密码,然后制定一个新的DAL策略。 |
![]() |
6
0
如果您使用的是SQL Server,那么linq to sql就很好了。linqtosql提供程序可以访问和mysql。不过我还没有测试过。LinqToSQL遵循UnitOfWork模型,该模型类似于ADO.NET函数。对数据的本地副本进行一系列更改,然后用一个更新调用提交所有更改。我觉得很干净。 您还可以自己扩展DataRow类,以提供对字段的强类型访问。我使用XSLT根据每个表的元数据生成数据行后代。我有一个通用的数据表decendant。mydataTable,其中t是派生行。我知道MS的强类型数据集也有类似的功能,但我想要一个我完全控制的轻量级通用版本。一旦有了这个,就可以编写静态访问方法来查询数据库并填充数据表。 您将负责将数据表中的更改写回数据源。我将编写一个通用类或方法来创建更新、插入和删除。 祝你好运! |
![]() |
7
0
我使用SPs的MineWrapper进行最快的数据检索,并在性能不是目标时使用L2s。我的DAL使用存储库模式和TDD的封装逻辑。 |
![]() |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
![]() |
cobby · 在战略模式中使用工厂模式? 3 年前 |
![]() |
Nobody · Java中带while循环的三角形模式 3 年前 |
![]() |
Eduard Stefanescu · 如何在层之间传输异常? 7 年前 |
![]() |
D. Schreier Talha Noyon · 对于目录中的每个类 7 年前 |
![]() |
Tanvi Jaywant · 如何重载类 7 年前 |