将实体框架设为只读

时间:2012-03-09 10:31:11

标签: c# .net entity-framework readonly

我目前正在创建一个从许多不同数据源中提取数据的应用程序 - 其中大多数是开发数据库,​​但有些是实时的(我知道这很糟糕,但它完全不受我的控制)。

我想保护自己不要对这些实时数据库进行修改,因此我有兴趣将实体设为只读

我的研究告诉我这是不可能的,但我预计现在可以使用功能更改或解决方法。有没有人实现这个目标?

1 个答案:

答案 0 :(得分:8)

我认为最好将限制放在数据库中而不是应用程序中。在实时数据库中创建一个单独的用户,该用户是data_reader角色的成员。这将只提供对数据库的读访问权。

如果您已经调整了服务器上的安全设置和角色,则必须详细检查,但默认情况下data_reader会这样做。

修改

一种简单的方法是覆盖这些数据库的数据上下文的SaveChanges()方法:

public override int SaveChanges()
{
    throw new AccessViolationException(
         "Don't mess with a live database during test");
}