2010-12-10 116 views
2

我有一个使用Ado .net实体框架进行数据库操作的Web服务(WCF)。使用此框架生成所有实体。所以我的问题是我可以使用由Entity框架生成的这些模型到我的MVC应用程序只引用一个Web服务?如果它没问题,那么它会停止在MVC框架上编写Model,这样可以节省大量时间。MVC/WCF和Ado net实体框架

总结并说清楚, 可以使用wcf代理客户端作为mvc的视图模型。

回答

2

是的,绝对地,为您的WCF服务添加一个服务引用,定义一个代码库接口,它代表您可以使用模型类执行的操作,并且在此接口的实现中,只需使用自动生成的代理客户端调用服务。

现在剩下的就只有视图模型,它将填补来自WCF服务的视图和模型之间的空白。

实际上,在设计正确的ASP.NET MVC应用程序中,控制器永远不应该知道数据来自何处:它可能是SQL数据库,某个ORM框架,远程服务......控制器应该工作的所有通过此合同,您可以在视图模型和实际模型之间定义(存储库)和映射。实际的数据操作应该通过存储库的特定实现来执行。

+0

感谢您的回答。我可以将这些EF生成的模型作为“视图模型”直接使用到我的mvc应用程序中吗? – crypted 2010-12-10 17:45:20

1

将生成的实体模型移动到单独的程序集并从两个项目中引用程序集。

+0

他不必这样做。 – Aliostad 2010-12-10 14:21:03

1

是的,你可以。 MVC默认删除特定于EF的properties

在第一部分中,我们定义其拉 右出的逻辑我们默认 对象模板 ShouldShow方法。你会发现有 提System.Data.EntityState (在 System.Data.Entity.dll定义),用来 到过滤掉某些实体框架 属性。如果您未使用Entity Framework,则可以安全地删除该行 。你会知道你不需要 行,如果你不参考 System.Data.Entity.dll将 导致这个代码炸起来像 铝箔在微波炉。

+0

谢谢,但我更关心由EF生成并在wcf Web服务上公开的模型(代理客户端),我可以在我的mvc Web应用程序中将它们用作“视图模型”。 – crypted 2010-12-10 17:49:51