您使用什么特定的方法/应用程序在您的应用程序和数据库之间进行通信?带有存储过程的自定义代码?亚音速?休眠?实体框架?林克?
14 回答
我主要使用Microsoft Enterprise Library Data Access Block来访问 MS SQL Server 数据库中的存储过程。
去年左右我一直在使用 NHibernate,事实证明它是一种非常快速的方式(几乎)免费获得基本的 CRUD。
如果这是您想要了解的内容,我可以推荐 Billy McCafferty 在 CodeProject 上的 NHibernate 最佳实践文章:
http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx
这已被证明是一种出色的可扩展和灵活的解决方案,并且可以轻松实现 DAL 与其他层的明确分离。
我在之前的工作中使用 Hibernate 连接到 MySql 和 Sql Server,但我已经切换到 .NET,所以目前我使用 LINQ,我真的很喜欢它。
我们在我们的项目中使用IdeaBlade。我发现它很容易使用。
我们有一个 oracle 后端,其中包含 500 个存储过程,应用程序直接针对数据运行。
我开始构建一个我一直在集成的自定义或映射域模型,但我一开始做错了,现在我也被困在处理那个令人头疼的问题上......呃
MVC 框架,其中模型的数据源类具有实际的数据库语言,开发人员在大多数情况下使用 save、saveField、delete、find 等方法,框架将其转换为 sql 查询。这不仅更安全、更简单,而且代码独立于数据源也非常方便,即您可以更改数据库服务器并保留代码。
我在工作场所的 Java 项目上开始使用 Hibernate,然后意识到存在 .Net 端口(NHibernate)并在 .Net 项目中再次使用它。我还看到了joesteele提到的文章,并将它用作我的项目的基础,并在需要时进行了一些小的修改,主要是在需要手动定位事务开始和结束时。
可以应用于 Java 和 C# 平台的相同实践和库,以 Windows 或 Linux 作为应用程序平台,使得在不同平台上的开发比需要学习不同的框架更容易。
虽然我计划研究 Subsonic、iBatis 和 LINQ,但现在 Hibernate 和 NHibernate 似乎是适合这项工作的工具,而我必须同时针对 Windows 和 Linux 平台。
在工作中,我们的代码库是 C++ 和 Perl,我们使用 MySQL 数据库。对于我们的界面,我们有一些相当精简的自定义类,它们围绕着用于 C++ 代码的基本 MySQL 客户端库和用于 Perl 脚本的 DBI 模块。
SubSonic 和 LINQ to SQL,但希望有一天 LINQ to SubSonic!
我主要在工作和业余项目中使用 NHibernate。这开始是为了打破使用 ADO.NET 数据读取器/数据集的工作规范,我们现在有一些使用 Hibernate/NHibernate 的项目。
来自旧版本 MS Enterprise App Blocks 的 SqlHelper 类。它远非完美,但对于简单的 CRUD 应用程序来说,它的简单性很难被击败。
MS SQL 存储过程。
我通常用 LiNQ 创建一个 DataTier。
它由实现复合接口的存储库组成,因此我对如何使用它们具有完全的灵活性。
IPersonRepository : IReadRepository<Person>, ICreateRepository<Person>, IUpdateRepository<Person> //and so on..
它们大多以域对象为中心,因此它们发出域对象并自己处理所有映射逻辑。
他们还可能创建一些列表字典,例如一个由人的 id 和姓名组成的字典,因此我不必从数据库中提取太多内容来显示下拉列表。
虽然有时,对于较小的项目,我只使用没有 .dbml 的属性基础映射。
我觉得这种方法提供了一个非常干净的应用程序模型,因为所有杂乱无章的以数据为中心的逻辑都隐藏在 DataTier 中。Business-/ServiceTier 是纯业务 :)
- SQL 服务器
- 所有存储过程
- Handrolled 多态实体框架,我从一个项目到另一个项目重用它来处理 Sproc 结果集 -> 对象映射。
我想这让我很老派。