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