在尝试分离我的域图层和GUI并查看所有不同的方法时,我一直在问的问题是为什么这么难?为什么所有额外的数据代码都是对象,然后所有额外的属性映射复制值进出等等不应该是一种更简单的方法吗?
然后我记得当我曾经使用MS Access的小型小型数据库应用程序时,Access具有动态集的概念,基本上动态集是一个视图,就像一个SQL Server视图,除了它是一个可更新的视图。因此,MS Access表单将基于View / Dynaset,因此不必知道所涉及的所有单个表的详细信息。对我来说听起来像Data对象模式。现在,由于Access已有二十年的历史,因此不存在类似动态框架的动态集,视图,映射工具,它将实体从演示文稿中抽象出来吗?有没有我不知道的?第三方?
对此的想法?
答案 0 :(得分:0)
如果我理解正确,您可能正在寻找具有POCO实体的实体框架。您可以在模板的在线库中找到模板(当您在项目中添加新项时)。或者,您可以在.edmx设计视图中右键单击,选择“添加代码生成项”并选择Fluent Generator。
这些方法创建多个文件,而不是默认的一体化EF生成文件。一个这样的文件是DbContext(与ObjectContext相对),一个只包含实体(以常规C#对象的形式,没有属性或任何东西,只是普通对象),而最后一个包含以流畅规则形式生成的映射。
在此阶段,您可以将实体文件与其模板分离,并将其移动到另一个程序集。瞧,您拥有独立于EF基础设施的实体。你可以像以前一样传递这些实体的上下文,并且它将自己进行映射。
或者您也可以使用 AutoMapper 等工具,但是您必须手动提供映射,这是很多工作,但在某些情况下可能会很好。
答案 1 :(得分:0)
好的设计需要工作。如果这很容易,每个人都会自动完成。毕竟,每个人都希望尽可能少地完成工作。
你抱怨的所有事情都是良好的设计过程的一部分,如果你想要一个好的设计,就没有解决它们。
如果你想采取捷径,那么一定要跳过它们。这是你的代码。没有什么要求你以任何特定方式做事。
Access可以做很多事情,因为它是桌面应用程序,而不是Web应用程序。 Web应用程序与桌面应用程序的根本区别在于您如何设计它们,它们如何工作以及您面临的问题。例如,您拥有无状态环境且无法将请求结果集保留在请求中这一事实使得人们在Access中认为理所当然的许多事情无法在Web应用程序中执行。
具体来说,如果您想使用视图,则可以这样做。如果视图设计得当,则可以更新视图,但通常需要只影响视图中一个表的更新语句。 EF也可以使用视图,但是你必须处理很多怪癖。
数据映射器模式已成为Web设计中的常见模式,因为它是在层和/或层之间清晰分离关注点的最简单直接的方法。我建议你找到让它们在你的开发过程中工作的方法。
也可能是MVC不是最适合您使用的框架。听起来您更像是想要像Acceess一样构建Web应用程序,在这种情况下,Visual Studio Lightswitch可能是您的最佳选择。