0

在尝试分离我的域层和 GUI 并研究所有不同的方法来做到这一点时,我一直在问的一件事是为什么这如此困难?为什么所有额外的数据对象代码,然后是属性的所有额外映射,将值复制进出等等。难道不应该有更简单的方法吗?

然后我记得当我使用 MS Access 编写更小的 db 应用程序时,Access 有 Dynaset 的概念,基本上 Dynaset 是一个视图,就像 SQL Server 视图一样,除了它是一个可更新的视图。因此,MS Access 表单将基于视图/动态集,因此不必知道所涉及的所有单个表的详细信息。对我来说,这听起来像是数据对象模式。现在,既然 Access 已经有 2 年了,难道不应该有一个类似的用于实体框架的动态集、视图、映射工具,可以从演示文稿中抽象出实体吗?有没有我不知道的?第三方?

对此有什么想法?

4

2 回答 2

0

如果我理解正确,您可能正在寻找带有 POCO 实体的实体框架。您可以在模板的在线库中找到它们的模板(当您在项目中添加新项目时)。或者,您可以在 .edmx 设计视图中使用右键单击,选择“添加代码生成项”并选择 Fluent Generator。

这些方法创建多个文件,而不是默认的多合一 EF 生成文件。一个这样的文件是 DbContext(与 ObjectContext 相对),一个只包含实体(以常规 C# 对象的形式,没有属性或任何东西,只是普通对象),最后一个包含以流畅规则形式生成的映射。

在此阶段,您可以将实体文件与其模板分离并将其移动到另一个程序集。瞧,您拥有独立于 EF 基础架构的实体。您可以像以前一样传递这些实体的上下文,它会自己进行映射。

或者,您可以使用AutoMapper之类的工具,但您必须手动提供映射,这需要大量工作,但在某些情况下可能会很好。

于 2013-02-18T18:23:41.190 回答
0

好的设计需要工作。如果这很容易,每个人都会自动完成。毕竟,每个人都希望做尽可能少的工作。

你抱怨的所有事情都是好的设计过程的一部分,如果你想要一个好的设计,就没有办法绕过它们。

如果你想走捷径,那么一定要跳过它们。这是你的代码。没有什么需要你以任何特定的方式做事。

Access 可以做很多事情,因为它是桌面应用程序,而不是 Web 应用程序。Web 应用程序与桌面应用程序的设计方式、工作方式以及面临的问题有着根本的不同。例如,您有一个无状态的环境并且无法在请求之间保持结果集这一事实使得人们在 Access 中认为理所当然的许多事情都无法在 Web 应用程序中完成。

具体来说,如果你想使用视图,你可以这样做。如果设计得当,视图是可更新的,但通常需要只影响视图中一个表的更新语句)。EF 也可以处理视图,但它有很多你必须处理的怪癖。

数据映射器模式已经成为网页设计中的一种常见模式,因为它是在层和/或层之间清晰分离关注点的最简单直接的方法。我建议你想办法让它们在你的开发过程中发挥作用。

也可能 MVC 不是最适合您使用的框架。听起来您更像是想以您使用 Access 的方式构建 Web 应用程序,在这种情况下,Visual Studio Lightswitch 可能是您更好的选择。

http://msdn.microsoft.com/en-us/library/ff851953.aspx

于 2013-02-18T18:24:03.767 回答