将实体框架设为只读
本文关键字:只读 框架 实体 | 更新日期: 2023-09-27 18:27:10
我目前正在创建一个应用程序,该应用程序从许多不同的数据源中提取数据-其中大多数是开发数据库,但有些是实时的(我知道这很糟糕,但这完全超出了我的控制范围)。
我想保护自己免受对这些实时数据库的修改,因此我有兴趣使实体只读。
我的研究告诉我这是不可能的,但我预计现在可能会有功能改变或工作循环。有人做到了吗?
我认为最好把这个限制放在数据库中,而不是放在应用程序中。在活动数据库中创建一个单独的用户,即data_reader
角色的成员。这将只允许对数据库进行读取访问。
如果你调整了服务器上的安全设置和角色,你必须更详细地检查,但默认情况下data_reader
会这样做。
编辑
一个简单的方法是覆盖这些数据库的数据上下文的SaveChanges()
方法:
public override int SaveChanges()
{
throw new AccessViolationException(
"Don't mess with a live database during test");
}