【问题标题】:What are you currently using for data access?您目前使用什么来访问数据?
【发布时间】:2010-09-07 21:24:43
【问题描述】:

您使用什么特定的方法/应用程序在您的应用程序和数据库之间进行通信?带有存储过程的自定义代码?亚音速?休眠?实体框架? LINQ?

【问题讨论】:

    标签: .net data-binding data-structures data-access devforce


    【解决方案1】:

    我主要使用Microsoft Enterprise Library Data Access Block 访问MS SQL Server 数据库中的存储过程。

    【讨论】:

      【解决方案2】:

      在工作中,我们的代码库是 C++ 和 Perl,我们使用的是 MySQL 数据库。对于我们的界面,我们有一些相当精简的自定义类,它们围绕着用于 C++ 代码的基本 MySQL 客户端库和用于 Perl 脚本的 DBI 模块。

      【讨论】:

        【解决方案3】:

        SubSonic 和 LINQ to SQL,但希望有一天 LINQ to SubSonic!

        【讨论】:

          【解决方案4】:

          我主要在工作和业余项目中使用 NHibernate。这开始是为了打破使用 ADO.NET 数据读取器/数据集的工作规范,现在我们有一些使用 Hibernate/NHibernate 的项目。

          【讨论】:

            【解决方案5】:

            来自旧版 MS Enterprise App Blocks 的 SqlHelper 类。它远非完美,但对于简单的 CRUD 应用程序来说,它的简单性是无与伦比的。

            【讨论】:

              【解决方案6】:

              我们在我们的项目中使用IdeaBlade。我发现它很容易使用。

              【讨论】:

                【解决方案7】:

                MS SQL 存储过程。

                【讨论】:

                  【解决方案8】:

                  我通常使用 LiNQ 创建 DataTier。
                  它由实现复合接口的存储库组成,因此我对如何使用它们具有完全的灵活性。

                  IPersonRepository : IReadRepository<Person>, ICreateRepository<Person>, IUpdateRepository<Person> //and so on..
                  

                  它们大多以域对象为中心,因此它们发出域对象并自己处理所有映射逻辑。
                  他们还可能创建一些列表字典,例如一个由人的 id 和姓名组成的字典,因此我不必从数据库中提取太多内容来显示下拉列表。
                  虽然有时,对于较小的项目,我只使用没有 .dbml 的属性基础映射。

                  我觉得这种方法提供了一个非常干净的应用程序模型,因为所有杂乱无章的以数据为中心的逻辑都隐藏在 DataTier 中。 Business-/ServiceTier 是纯业务 :)

                  【讨论】:

                  • 不,但我绝对有朝一日会的。 :) 也许是项目结构模板或其他东西。
                  【解决方案9】:
                  • SQL 服务器
                  • 所有存储过程
                  • 我从一个项目到另一个项目重复使用的手动多态实体框架来处理 Sproc 结果集 -> 对象映射。

                  我想这让我很老派。

                  【讨论】:

                    【解决方案10】:

                    我在过去一年左右一直在使用 NHibernate,事实证明,它是一种非常快速的(几乎)免费获得基本 CRUD 的方法。

                    如果这是您想要了解的内容,我可以推荐 Billy McCafferty 在 CodeProject 上的 NHibernate 最佳实践文章:

                    http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx

                    这已被证明是一种出色的可扩展且灵活的解决方案,并且可以轻松实现 DAL 与其他层的明确分离。

                    【讨论】:

                      【解决方案11】:

                      MVC 框架,其中模型的数据源类具有实际的数据库语言,开发人员在大多数情况下使用 save、saveField、delete、find 等方法,框架将其转换为 sql 查询。这不仅更安全、更简单,而且代码独立于数据源也非常方便,即您可以更改数据库服务器并保留代码。

                      【讨论】:

                        【解决方案12】:

                        我在工作场所的 Java 项目上开始使用 Hibernate,然后意识到存在 .Net 端口 (NHibernate) 并在 .Net 项目中再次使用它。我还看到了 joesteele 提到的文章,并将其用作我的项目的基础,并在需要时进行了一些小的修改,主要是在需要手动启动和结束事务时。

                        相同的实践和库可以应用于 Java 和 C# 平台,将 Windows 或 Linux 作为应用程序平台,使得在不同平台上的开发比学习不同的框架更容易。

                        虽然我计划研究 Subsonic、iBatis 和 LINQ,但目前 Hibernate 和 NHibernate 似乎是适合这项工作的工具,而我必须同时针对 Windows 和 Linux 平台。

                        【讨论】:

                          【解决方案13】:

                          我在以前的工作中使用 Hibernate 来连接到 MySql 和 Sql Server,但后来我切换到了 .NET,所以目前我使用 LINQ,我真的很喜欢它。

                          【讨论】:

                            【解决方案14】:

                            我们有一个 oracle 后端,其中包含 500 个存储过程,应用程序直接针对数据运行。

                            我开始构建一个我一直在集成的自定义或映射域模型,但一开始我做错了,现在我也被困在处理那个令人头疼的问题上......呃

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2020-02-05
                              • 1970-01-01
                              • 1970-01-01
                              • 2010-11-29
                              • 1970-01-01
                              相关资源
                              最近更新 更多