我正在开发一个asp.net项目,客户端让我可以远程访问数据库。
数据库有两个用户。一个用户具有只读权限,而其他用户具有所有者访问权限。客户说,为了读取数据,我们应该使用第一个,插入等使用第二个。
客户端也告诉我尽可能多地使用存储过程,因为有很多数据来自db服务器。我想使用Entity框架(edmx)。我可以使用存储过程吗?在Entity框架之前,我一直在使用Enterprise库来存储过程。我是否需要返回并将其与存储过程一起使用,以便所有与数据库相关的工作都在db server端完成,而不是使用实体框架将数据传送到Web服务器?
另外,如何将一个用户用于只读目的而另一个用户访问同一个数据库以进行插入?我需要创建两个Web配置吗?让用户只读并更快地获得结果会有所不同吗?
如果有更好的方法,请建议我。
请建议。
答案 0 :(得分:1)
您可以使用EF存储过程。但要注意,实体很难使用存储过程。
EF在不编写sql语句的情况下生成查询,它通过观察实体中的更改来生成sql语句。它只是将您的实体映射到db表。因此,如果您有一个名为“Item”的表,它会在代码端创建一个对象“Item”。您可以使用代码编写“Item”实体并调用EF的相关方法,以将实体中所做的更改反映到DB。
您可以根据操作动态创建连接字符串。
问题太宽泛,所以我不知道这是否有帮助。
答案 1 :(得分:0)
实体框架不会发生在服务器端。它生成一个sql查询,并在db上执行查询。结果设置它通过ef映射到一个对象。这称为ORM。谷歌应该拥有大量关于ORMS的信息。
布莱尔
答案 2 :(得分: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
通常,当人们想要限制开发人员使用存储过程时,这是为了感知不实际的好处,他们没有意识到他们正在减慢开发速度,没有任何理由。并不是说存储过程很糟糕,但它们有它们的位置,并且根本没有理由说它们应该尽可能广泛地使用。