1

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

该数据库有两个用户。一个用户具有只读访问权限,而另一个用户具有所有者访问权限。客户说,出于读取数据的目的,我们应该使用第一个,而对于插入等,我们应该使用第二个。

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

另外,我怎样才能使用一个用户进行只读目的而其他用户访问同一个数据库进行插入?我需要创建两个网络配置吗?使用户只读并更快地获得结果是否有区别?

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

请建议。

4

3 回答 3

1

您可以在 EF 中使用存储过程。但要注意,让实体与存储过程一起工作真的很困难。

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

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

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

于 2012-05-25T06:30:51.587 回答
0

问他让你通过一个用户读取访问权并通过另一个用户插入访问权,他觉得他有什么优势,如果他有正当理由,那么只要确保他知道他在增加开发时间和维护方面做出权衡。

其次,使用存储过程与数据量有什么关系?如果您正在执行大量查询(如果您正在提取大量数据,则可能不会),那么您可以通过使用存储过程来略微减少网络流量,因为触发存储过程的请求将少于查询细绳。不过,这甚至不值得担心。

Jeff Atwood 实际上在这里对存储过程有一些很好的评论:http: //www.codinghorror.com/blog/2004/10/who-needs-stored-procedures-anyways.html

在这里: http: //www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

通常,当人们想要限制开发人员使用存储过程时,这是为了获得不真实的好处,他们没有意识到他们无缘无故地减慢了开发速度。并不是说存储过程不好,但它们有它们的位置,并且有一条规则说它们应该尽可能广泛地使用是没有意义的。

于 2012-05-25T06:30:44.363 回答
-1

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

布莱尔

于 2012-05-25T06:20:03.953 回答