实体框架与企业库

我正在开发一个客户端允许我远程访问数据库的asp.net项目。

该数据库有两个用户。一个用户只能读取访问权限,而另一个用户拥有访问权限。客户说为了读取数据目的,我们应该使用第一个和插入等使用第二个。

客户也告诉我尽可能使用存储过程,因为有很多数据将来自数据库服务器。我想使用实体框架(EDMX)。我可以使用存储过程吗?在实体框架之前,我一直在使用企业库来存储过​​程。我是否需要返回并将其与存储过程结合使用,以便所有与数据库相关的工作都是在数据库服务器端完成的,而不是使用实体框架将数据带入Web服务器?

另外,我如何使用一个用户进行只读目的和其他用户访问相同的数据库插入?我需要创建两个Web配置吗?使用户只能读取并获得更快的结果有什么区别吗?

如果有更好的方法,那么请给我建议。

请建议。

1
额外 编辑
意见: 2
我投票结束这件事是因为:很难说出这里提出的问题。这个问题含糊不清,含糊不清,不完整,过于宽泛或修辞,并且不能以其当前形式合理地回答。
额外 作者 Erik Philips,
你在问一些非常模糊的问题。我会将其改为多个不同的问题。
额外 作者 CodingBarfield,

3 答案

您可以使用带有EF的存储过程。但要小心,让实体与存储过程一起工作真的很困难。

EF在不编写sql语句的情况下生成查询,它通过观察实体中的更改来生成sql语句。它只是将你的实体映射到数据库表。所以如果你有名为“Item”的表,它将在代码端创建一个对象“Item”。您可以使用代码调用“Item”实体并调用EF的相关方法以反映实体在数据库中所做的更改。

您可以根据操作动态创建连接字符串。

这个问题太广泛了,所以我不知道这是否有帮助。

1
额外

问他,如果你通过一个用户读取访问权限并通过另一个用户访问访问权限,并且如果他有合法的理由,那么只要确定他知道他在增加开发时间和维护方面进行权衡,他就会感觉到自己的优势。

其次,使用存储过程与数据量有什么关系?如果你正在做大量的查询(可能不是如果你拉大量的数据),那么你可以通过使用存储过程来略微减少网络流量,这是因为发出存储过程的请求将少于查询串。但这并不值得担心。

Jeff Atwood actually has some great comments about stored procs here: http://www.codinghorror.com/blog/2004/10/who-needs-stored-procedures-anyways.html

and here: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

通常,当人们想要限制开发人员使用存储过程时,它会让人感觉到不是真实的好处,并且他们没有意识到他们正在放慢开发速度,没有理由。并不是说存储过程是不好的,但它们有其自己的位置,并且有一条规则说明它们应该尽可能广泛地使用是没有意义的。

0
额外

实体框架不会发生服务器端。它生成一个SQL查询,并在数据库上执行查询。结果通过ef将它映射到一个对象。这被称为ORM。谷歌应该拥有关于ORMS的大量信息。

布莱尔

0
额外
我可以在Entity框架中使用存储过程来加速性能吗?
额外 作者 DotnetSparrow,
您可以在EF中使用存储过程。但是,使用存储过程会导致EF 4.x(当前版本)中的很多功能失效。
额外 作者 Erik Philips,