如何在EF4中调用存储的SELECT过程来填充EntityDataSource

时间:2012-01-09 15:29:00

标签: c# entity-framework gridview entity-framework-4 devexpress

我试图调查EF4在我的项目中的使用,我遇到了这个“有趣”的问题。

创建edmx,有一种简单的方法可以将实体连接到通过EntityDataSource的用户界面组件(例如DevExpress GridView)。

问题: 您认为有没有更好的方法将我的实体绑定到控件?

现在作为客户端规范,我很乐意通过存储过程(用于更新,插入,选择,删除)与数据库进行交互,从而限制EF的功能,但它仍然会给我一些好处。

问题: 有没有办法使用select存储过程,因为它是为插入/更新/删除而继续使用EntityDataSource?

问题: 您是否认为使用数据库视图填充实体是合理的解决方案,以便导航选择并使用存储过程映射?

感谢您的帮助和想法。

1 个答案:

答案 0 :(得分:1)

第一个问题在nautre中有点开放,而且取决于您正在使用的控件以及您尝试遵循的设计模式(如果有)。从开发的角度来看,如果您是单元测试,则应始终考虑关注点的分离,以及您希望将控件绑定到“域”的严密程度。这是一个ASP.NET应用程序吗?

第二个问题很常见,尤其是在您遇到安全问题和严肃的DBA(!)的企业场景中。您可以实现选择存储过程。我建议阅读帖子found here

至于第三个问题,再次可以在实体框架中使用视图。有几篇文章和陷阱,我当然也会先查看this article

2和3真正归结为客户的要求。在我当前的项目中,我们使用存储过程进行创建,更新和删除操作,同时允许在必要时对表进行直接选择访问。这是有效的,因为它允许您在动态查询方面使用EF和LINQ的本机功能。同样,这符合我们的要求,但可能不适合您的要求!

修改

我只想提供关于您上次评论的更多链接,因为他们更明确地处理EntityDataSource。相关的SO文章是here,它链接到一篇很好的文章here,它可以帮助您。

编辑

还有一个选项是添加一个定义查询来控制EF执行选择的方式。请参阅here

尼克。