我有一个用 ASP.Net 2.0 Web 窗体编写的系统。与 MySQL 服务器对话的框架非常酷。它读取服务器表单标签或面板内的所有控件,并对目标表执行 CRUD 操作。
当我创建 CRUD 页面时,我只需要在数据库 user{id,name,password,createdate} 中创建表,我只需要使用 id 作为表中的确切列名。控件可以是页面上的输入/选择/选项/检查框/文本区域甚至是FCK编辑器或CK编辑器。框架循环访问面板内的所有控件并保存/编辑/删除。如果我想添加一些新的字段,电子邮件和移动,我只需要在页面上添加两个控件并在表格中再添加两列。就是这样。我不必更改 page.aspx.cs 文件、实体层、业务层或数据访问层中的任何内容。它非常易于实施和维护。
我们想升级系统以使用 ASP.Net 4 MVC3 和 Entity Framework CT5。我们将从头开始重建整个系统。我希望这里的一些专家能给我一些指示。我找到了以下两个选项来重建系统。
1. Code First 我们的新系统将执行与上述框架完全相同的操作。它将遍历所有 Request.Forms 数据并将它们与数据库中的关联表映射并保存/更新/删除所有数据。为此,视图将发布表单数据,控制器将接受带有实体类的值并通过 EF 将它们保存到数据库中。我仍然需要创建 ViewModel 类来在 View 上显示数据。如果有任何更改,例如向用户页面添加电子邮件和移动字段,我仍然需要更改三个位置视图,实体(域类)和 ViewModel。我不必更改数据库中的任何内容,因为 EF 会自动运行 ALTER TABLE 来添加两个新字段。我仍然无法弄清楚如何最小化实体和视图模型类的需求。
2. Database First 我真的不喜欢这种方式,但如果这个解决方案提供更灵活的操作,我会喜欢。我将在数据库中创建列,系统将动态创建 ViewModel(我仍在研究如何做到这一点)读取表中的所有列,并在页面上显示数据。当视图发布数据时,它需要动态创建实体类并将更改保存到数据库中。
编辑:升级当前系统的原因。
- 我们想利用 .Net 4、Linq、Entity Framework、不显眼的 javascript 库、更容易处理 JSON 数据、远程验证(我们可以在当前系统中使用 RequireFieldValidator、RegExValidator 但它们是有限的,例如:验证输入复选框和选项),使用 var 和接口进行鸭式输入。