将实体框架设为只读

m.e*_*son 4 .net c# entity-framework readonly

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

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

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

And*_*bel 8

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

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

编辑

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

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