【发布时间】:2010-12-10 14:16:10
【问题描述】:
我有一个使用 Ado .net 实体框架进行数据库操作的 Web 服务 (WCF)。我使用此框架生成所有实体。所以我的问题是我可以将实体框架生成的这些模型用于仅引用 Web 服务的 MVC 应用程序吗?如果没问题,它就会停止在 MVC 框架上编写模型,从而节省大量时间。
总结并说清楚, wcf 代理客户端是否可以用作 mvc 的视图模型。
【问题讨论】:
标签: asp.net-mvc wcf
我有一个使用 Ado .net 实体框架进行数据库操作的 Web 服务 (WCF)。我使用此框架生成所有实体。所以我的问题是我可以将实体框架生成的这些模型用于仅引用 Web 服务的 MVC 应用程序吗?如果没问题,它就会停止在 MVC 框架上编写模型,从而节省大量时间。
总结并说清楚, wcf 代理客户端是否可以用作 mvc 的视图模型。
【问题讨论】:
标签: asp.net-mvc wcf
是的,绝对是,向您的 WCF 服务添加服务引用,定义一个存储库接口,该接口将表示您可以使用模型类执行的操作,并且在此接口的实现中,只需使用自动生成的代理客户端调用服务即可。
现在剩下的就是让视图模型填补视图和来自 WCF 服务的模型之间的空白。
事实上,在一个设计合理的 ASP.NET MVC 应用程序中,控制器永远不应该知道数据来自哪里:它可能是一个 SQL 数据库、一些 ORM 框架、一个远程服务……控制器应该使用的所有东西您已定义(存储库)的此合同并在视图模型和实际模型之间映射。实际的数据操作应该由存储库的特定实现来执行。
【讨论】:
将生成的实体模型移动到单独的程序集并从两个项目中引用该程序集。
【讨论】:
是的,你可以。默认情况下,MVC 会删除特定于 EF 的 properties。
在第一部分,我们定义了一个 被拉取的 ShouldShow 方法 不符合我们默认的逻辑 对象模板。你会注意到有 提到 System.Data.EntityState (定义在 System.Data.Entity.dll) 使用 过滤掉某些实体框架 特性。如果您不使用实体 您可以安全地删除它的框架 线。你会知道你不需要那个 如果您没有引用,则行 System.Data.Entity.dll 这将 导致这段代码像爆炸一样 铝箔放在微波炉里。
【讨论】: