我正在编写一个连接到2个不同数据库模式的应用程序。其中一个模式应该是只读的。有没有办法将连接设置为只读?我没有能力创建只读用户。
答案 0 :(得分:0)
将连接模式属性设置为ModeRead
con.Mode = 1
答案 1 :(得分:0)
更好的方法是根据是否允许用户修改数据来禁用UI元素。您的方法存在问题,即EF API不适用于只读模式。使用只读连接时调用SaveChnages
抛出异常。
您可以执行以下操作以防止EF在只读连接上进行更新。
public class MyContext : DbContext
{
private bool isReadOnly;
public MyContext(string conn, bool isReadOnly)
:base(conn)
{
this.isReadOnly = isReadOnly;
}
public override int SaveChanges()
{
if (isReadOnly)
{
return 0; //or throw exception
}
return base.SaveChanges();
}
}
使用ObjectContext
这有点棘手。您可以取消设置SavingChanges
事件中的所有更改。