gpt4 book ai didi

asp.net-mvc-3 - 如何为 MVC3 生成服务层和存储库层

转载 作者:行者123 更新时间:2023-12-03 02:45:25 25 4
gpt4 key购买 nike

我最近为客户完成了一个 MVC3 项目,使用使用微型 ORM 实现的存储库模式,并为我的业务逻辑提供了服务层。恕我直言,该应用程序运行良好,客户很满意。

但是每当我想要添加/实现新服务和关联的 DTO 时,我都必须编写大量样板代码。另外,在将 DTO 转换为 View 模型并再转换回来时,存在大量代码重复,并带有相关的 PEBKAC。随着需求的发展,数据库模式发生了变化,需要直接传播到 View 模型。

对于另一个客户端,我继承了一个 .netTiers 代码生成项目,这给我带来了很大的痛苦,直到我修复了基本模板中的一些缺陷,使用 MSBuild 自动生成代码,并且还使用 MSBuild 调整了生成的代码以获得它无需先前所需的手动调整目录即可构建。 .netTiers 最终生成了大量有用的代码,但存在大量重复、复杂性,感觉就像用大锤剥猫皮一样。

现在我正在研究另一个 MVC3 项目,我想避免自己编写所有样板文件,但我也想避免生成完整的 .netTiers 类型代码。我没用过EF。我倾向于认为对于我所承担的项目规模而言,它是一个太大的工具,但如果它可以为我省去一些手动步骤,那么这将节省大量时间。 EF 有哪些优点?它会为我搭建服务层吗?

我正在考虑的另一个选项是 LightSpeed这需要我花一些美元(不多),但如果它能为我生成服务层代码,那钱花得值。 LightSpeed 支持这种类型的代码生成吗?

显然,随着域模型和数据库模式的发展,服务需要更新以适应这些变化。 .netTiers 通过生成部分类来实现这一点。这些其他工具如何处理这些更改而不覆盖服务层中的任何自定义逻辑?

还有哪些其他选择?

更新:感谢您的所有反馈,有很多积极的选择值得关注。有人看过MVC Scaffolding

更新 #2:我将采用 MVCScaffolding 选项,该选项为 EF Code First 生成代码。它开箱即用地生成一个 Repository 类,然后不幸地将其与模型粘在一起,而模型在 MVC 中实际上是 View 模型,而不是域模型。 MVCScaffolding 项目有一个针对服务层脚手架的拉取请求,因此我们将研究该选项。加上用于映射 POCO <-> DTO 的 AutoMapper。

最佳答案

T4 模板运行良好且易于修改。它们可用于数据层以及任何服务层。

我们仅用于 EF 代码的流程:

  1. 从我们的数据库构建 edmx
  2. 安装 T4 POCO 类生成模板
  3. 生成 POCO 和上下文类
  4. 删除 edmx 和 T4 模板,保留 POCO 和上下文类

Entity Framework 中的新工具非常棒,因为它们为您提供了各种选项:

模型第一:

  1. edmx 中的模型
  2. 从 edmx 生成数据库
  3. 从 edmx 生成 POCO 类
  4. (可选)删除 edmx,仅运行代码

代码第一:

  1. 编写 POCO 类
  2. 从 POCO 类生成数据库
  3. (可选)从 POCO 类生成 edmx

数据库优先:

  1. 建立数据库
  2. 从数据库生成 edmx
  3. 从 edmx 生成 POCO 类
  4. (可选)删除 edmx,仅运行代码

附录(2012 年 1 月 14 日):

Code First Migrations 的测试版已经发布。我们还没有调查过,但看起来很有趣。

关于asp.net-mvc-3 - 如何为 MVC3 生成服务层和存储库层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com