0

2 つの異なるデータベース スキーマに接続するアプリを作成しています。これらのスキーマの 1 つを読み取り専用にする必要があります。接続を読み取り専用に設定する方法はありますか? 読み取り専用ユーザーを作成する権限がありません。

4

2 に答える 2

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イベントのすべての変更を設定解除できます。

于 2012-07-17T00:41:23.733 に答える
0

接続モード プロパティを ModeRead に設定します

接続モード = 1

于 2012-07-16T22:26:16.967 に答える