日期:2014-05-20  浏览次数:20957 次

EF里code first开发数据库权限的疑惑
一般数据库就是给了一个帐号,对某个数据库有建立表的权限,但是EF里,架构修改了就要重新建立数据库,这样这个权限不是很大了,一般是如何处理这个问题的?谢谢

------解决方案--------------------
探讨
一般数据库就是给了一个帐号,对某个数据库有建立表的权限,但是EF里,架构修改了就要重新建立数据库,这样这个权限不是很大了,一般是如何处理这个问题的?谢谢

------解决方案--------------------
http://weblogs.asp.net/scottgu/archive/2010/07/23/entity-framework-4-code-first-custom-database-schema-mapping.aspx
------解决方案--------------------
上面这个好像是初始化数据库用的, 你去掉了就不会修改model了重建数据库了.

和sa没联系,一般都不建议用sa帐号的.
不过登录的sql的用户的权限要高点, 给个所有者权限试试.
------解决方案--------------------
关注也是这个问题,model修改了就要重新建立数据库。原先的数据如何保留 难道只有在初始化的时候加载吗?。关注,顶。
------解决方案--------------------
我是这样打算的:
在开发的时候,付给系统较大的权限,这样可以Drop & Create

如果在上线以后,则修改给用户的权限,不给它那么大的权限,再者说,如果用户正在测试呢,我们的模型一改,他们的测试数据全没了,岂不要投诉,

结合测试后的系统,修改代码后,手工修改数据库保持同步,这是的建议.
------解决方案--------------------
给一个非官方,我不完全测试,证明可行的办法。

在本地建立一套开发数据库,服务器上是生产数据库。

改动模型,会修改本地数据库。
记录下建库脚本,修改为修改数据库脚本,在服务器上更新。
然后记录本地的ModelHash,在一个特殊的表中。再在服务器端修改ModelHash等于这个值。

这样可以骗过EF Codefirst,让它认为服务器表结构和模型是匹配的,不需要重建,达成迁移。
------解决方案--------------------
先用 sql server file 做数据库,不可以么?


------解决方案--------------------
这个问题我也想问。等高手回答。
不过。楼上有朋友说。直接在服务器上执行修改表结构的 SQL 语句。这也是一个可行的办法。
再一个。如果不要ModelHash表,也可这样做

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

这样,他创建的时候,就不会有 ModelHash 表了