【发布时间】:2014-01-29 02:59:34
【问题描述】:
我知道这听起来很奇怪 - 请允许我解释一下:
我目前正在开发一个带有数据库的标准 Web 应用程序。我选择使用 IoC 框架 (Ninject)、Entity Code First、Bootstrap 和其他一些相关技术。我已经在 UML 中转录了一个数据库模型,现在我正在尝试逐步实现它。这通常是这样的:
- 选择要实施的功能。
- 检查需要哪些数据库表。
- 创建适当的 POCO 类
- 使用迁移工具生成新数据库
- 创建功能所需的所有必需的 CRUD 方法。 (我知道我应该创建单元测试,但根本没有时间:/)
第一个问题是 - 以上对您来说看起来“正常”吗?也许我错过了一些可以加快我发展的东西?或者也许我应该添加更多步骤,例如,尽早发现更多错误?
现在下一步是创建视图,所以我这样做:
- 在适当的控制器中创建 ViewMethod。
- 基于一个或多个 POCO 数据库类创建 ViewModel
- 为我的新 ViewModel 创建编辑器模板
- 在控制器内部创建功能逻辑。
上述方法的问题是:
-
我经常需要创建几乎一个 POCO 实体的副本,然后 - 在保存过程中,我需要将其转换回适当的 POCO 实体,通常如下所示:
PocoEntity1 pocoEntity1 = new () { UserName = ViewModel.UserName, UserPicture = ViewModel.UserPicture (and so on) }
以上内容非常耗时且容易出错 - 另一方面,如果我直接使用 POCO,我将不得不添加很多属性,例如:
[Required]
[StringLength(128)]
[DisplayNameLocalizer("FirstName", typeof(TranslationStrings))]
不建议这样做(有时我希望某些属性具有不同的名称,具体取决于视图)。
问题是 - 没有“介于两者之间”的东西吗?例如,允许我将 ViewModelEntity 直接转换为 POCO 实体的东西会非常有帮助。有什么我可以做的来加快速度吗,还是我现在的做事方式正确?
【问题讨论】:
标签: c# .net asp.net-mvc-4 poco