我是否可以在没有只读用户的情况下为我的EDM创建只读连接?

时间:2012-07-16 22:12:38

标签: c# .net sql-server entity-framework

我正在编写一个连接到2个不同数据库模式的应用程序。其中一个模式应该是只读的。有没有办法将连接设置为只读?我没有能力创建只读用户。

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事件中的所有更改。