C# “手动”数据访问库的现代化

C# “手动”数据访问库的现代化,c#,asp.net,code-generation,data-access-layer,data-access,C#,Asp.net,Code Generation,Data Access Layer,Data Access,有一个web应用程序,它依赖于一种数据访问库简单数据对象和关联对象来对它们执行CRUD操作,这些操作是直接从数据库生成的 所以从一个人的桌子 身份证 名字 姓 多布斯 您将获得一个生成的Person类,其中包含以下字段: ID、名字、姓氏、从db列键入的出生日期 和一个助手类PersonPersister 与 方法 它还将在数据库上创建必要的CRUD存储过程 我开始时对此感到不安,因为除了与nHibernate和MEF的短暂调情外,我习惯于手工编写数据访问层。一年过去了,我所有的担心似乎都有了结

有一个web应用程序,它依赖于一种数据访问库简单数据对象和关联对象来对它们执行CRUD操作,这些操作是直接从数据库生成的

所以从一个人的桌子

身份证 名字 姓 多布斯

您将获得一个生成的Person类,其中包含以下字段:

ID、名字、姓氏、从db列键入的出生日期

和一个助手类PersonPersister

方法

它还将在数据库上创建必要的CRUD存储过程

我开始时对此感到不安,因为除了与nHibernate和MEF的短暂调情外,我习惯于手工编写数据访问层。一年过去了,我所有的担心似乎都有了结果,因为我们正在与一个更大的开发团队进行另一阶段的开发,裂缝已经开始出现

基本问题是,作为开发人员,我们无法控制生成的数据,也无法对DAL进行版本设置

每次发布时,我们都会花很多时间手动配置应用程序、dal和数据库,以使其正常工作。通常情况下,DAL是从开发数据库中生成的,然后应用于实时数据库,而实时数据库当然缺少开发过程中创建的表/存储过程等

在这些时候,我经常发现自己去了jobserve.com,尽管撇开这个问题不谈,我还是很喜欢在这里工作

我的想法包括修改codegenerator,使其覆盖Visual Studio项目中的源文件——这些文件可以在CVS中跟踪,也可以手动编辑。有没有人对这种战略有过积极的经验?目前构建生成的唯一工件是dll,因此无法查看更改历史

除了使用ORM之外,管理层不是一个粉丝-是的,我知道我们的选择是什么,只要合理化这一点,让我们自己控制?我们仍然需要一个自动化的元素,但我们拥有的数量目前是行不通的


我们很幸运这里有MSDN订阅,因此我们正在运行TFS 2010,其中包括自动构建、最新的Visual Studio等,但由于我们开发环境的这一方面,感觉上我们落后了十年或更长时间。

我觉得这更多是部署策略的问题,而不是开发策略的问题。无论您使用的是ORM还是当前的工具,如果您使用开发人员数据库中的自动生成实体,那么它都将生成。您的部署需要确保对应用程序的所有更改都通过您的QA传播到您的生产系统中,无论是应用程序、数据库还是其他依赖项。

我觉得这更多是部署策略的问题,而不是开发策略的问题。无论您使用的是ORM还是当前的工具,如果您使用开发人员数据库中的自动生成实体,那么它都将生成。您的部署需要确保对应用程序的所有更改都通过您的QA传播到您的生产系统上,无论是应用程序、数据库还是其他依赖项。

一个维护所有存储过程的数据库项目如何

专业人士

数据库的版本控制 易于部署..您只需 指定要转到的数据库 只需单击一次,您就可以部署它。。。 你很清楚现在发生了什么变化 引入新课程的结果 所有数据库代码都与 其他代码和可从 一个IDE使它如此强大 更容易一次发送更改。。 缺点

你可能得花时间在这方面 迁移你的礼物 创建存储 过程,创造的东西 存储的过程脚本文件…基本上 创建/更新/删除中的所有代码 你提到的必须是 我又写了一遍。 还有更多的赞成和反对意见,你会更好地判断

如果你考虑选择这个选项,你必须看下面的链接


一个维护所有存储过程的数据库项目怎么样

专业人士

数据库的版本控制 易于部署..您只需 指定要转到的数据库 只需单击一次,您就可以部署它。。。 你很清楚现在发生了什么变化 引入新课程的结果 所有数据库代码都与 其他代码和可从 一个IDE使它如此强大 更容易一次发送更改。。 缺点

你可能得花时间在这方面 迁移你的礼物 创建存储 过程,创造的东西 存储的过程脚本文件…基本上 创建/更新/删除中的所有代码 你提到的必须是 我又写了一遍。 还有更多的赞成和反对意见,你会更好地判断

如果你考虑选择这个选项,你必须看下面的链接


我以前使用过代码生成工具,并使用它们生成模板代码,该模板代码是VisualStudio项目的一部分,然后 手动修改以满足要求。这意味着代码生成只是一个节省时间的步骤,并且源代码完全由版本控制


这听起来像是一个很好的第一种方法,你可以做你所说的文件覆盖,然后你可以得到版本控制和适当的QA发布周期的明显好处。

我以前使用过代码生成工具,并使用它们生成模板代码,该模板代码是Visual Studio项目的一部分,然后手动修改以满足要求。这意味着代码生成只是一个节省时间的步骤,并且源代码完全由版本控制


这听起来像是一种很好的第一种方法,您可以先进行您所说的文件覆盖,然后获得版本控制和适当的QA发布周期的明显好处。

这里有两个问题-DAL和部署策略

要解决部署问题,您应该看一看

我最近为一个有类似问题的客户机实现了它,现在他们可以部署应用程序,知道数据库将在必要时自动升级/同步这是一个可选功能

您可以使用流畅的API、嵌入式SQL脚本、内联SQL—任何适合您的工具。您还可以非常轻松地将migrator包含在自动构建过程中


揭示了一家公司在it方面的经验,并提供了一些关于如何将升级过程连接到应用程序启动的代码示例。

这里有两个问题-DAL和部署策略

要解决部署问题,您应该看一看

我最近为一个有类似问题的客户机实现了它,现在他们可以部署应用程序,知道数据库将在必要时自动升级/同步这是一个可选功能

您可以使用流畅的API、嵌入式SQL脚本、内联SQL—任何适合您的工具。您还可以非常轻松地将migrator包含在自动构建过程中


揭示了一家公司在it方面的经验,并提供了一些关于如何将升级过程与应用程序启动挂钩的代码示例。

对我来说,这听起来像是一个很大的改动。我曾参与过一个项目,在该项目中,开发人员在提交影响数据库模式的代码时必须更新“release”SQL脚本。作为发布周期的一部分,“搅动”是描述它的一种方式:-对我来说,oSounds就像很多搅动一样。我曾参与过一个项目,在该项目中,开发人员在提交影响数据库模式的代码时必须更新“release”SQL脚本。作为发布周期的一部分,该脚本经过审查并应用于客户机的数据库。“搅动”是描述它的一种方式:-我想说这两者都有一点,但更多的是在开发方面,而不是在部署方面,我习惯于使用SQL Delta来同步开发数据库->暂存->生产,这并不特别繁重。问题更多地与开发人员对数据库进行更改有关,运行codegen并基于新生成的“DAL”中的对象编写定制代码,其中当然引用了live DB中不存在的对象/列等。我想说这两者都有一点,但更多的是在开发中,而不是在部署方面,我习惯于使用SQL Delta同步开发数据库->暂存->生产,这并不特别繁重。问题更多的是开发人员对数据库进行更改,运行codegen,并根据新生成的“DAL”中的对象编写定制代码,这些对象当然引用了live db中不存在的对象/列等。这听起来不错-假设您没有链接到示例/教程,是吗…?非常感谢。我花了一段时间才弄明白这一点,但谢天谢地,这一次可用的MS工具确实起到了帮助。接受-听起来不错-不要以为你有一个链接到一个例子/教程你…?非常感谢。我花了一段时间才弄明白这一点,但谢天谢地,这一次可用的MS工具确实起到了帮助。接受-
Create(Person p)  
Update(Person p)  
Delete(Person p)