1

MySQL サーバー データを Silverlight クライアントに表示しようとしていますが、現在の攻撃計画は、Silverlight クライアントと Entity Framework 間のデータ アクセスを提供する RIA サービスを使用して Entity Framework を MySQL に使用することです。

ただし、私はデータをユーザーに提示しようとしているだけであり、私や他の誰かが MySQL のデータを変更できる可能性は望んでいません。

要するに、すべてのエンティティ タイプのセッターを単純に無視する方法があればいいのにと思います。私はゲッターだけが欲しいです。MySQL への「読み取り専用」アクセスが必要です。ただし、私の唯一のオプションは、個々のフィールドの「Setter」をInternalPrivateProtected、またはPublicに変更することです。

私がやろうとしていることを達成するためのより良い方法はありますか?

4

2 に答える 2

6

RIA サービスを使用している場合...

ドメイン サービス クラス (RIA の本質) を作成すると、[編集を有効にする] をクリックできるダイアログが表示されます。あなたの場合、それをクリックしないでください。編集機能は生成されません。

RIA サービスはサーバーとクライアントを接続するためのものであり、CRUD の CUD 部分を生成することはできません。

とあるブログより
(出典: silverlightshow.net )

于 2009-09-29T15:50:36.763 に答える
3

私がRIAサービスを使用したことがないという警告がありますが、私が理解していることから、RIAサービスはADO.NETデータサービスの上に構築されています。(私が知る限り)Silverlightで生成されたプロキシでのプロパティセッターの作成を停止する方法はありませんが、静的InitializeService()メソッドで少しのコードを使用してデータサービス自体をロックダウンできます。

public class MyDataService : DataService<MyEntityModel>
{
    public static void InitializeService(IDataServiceConfiguration config)
    {
        // make all entity sets read-only:
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);

        // make the (example) CommentEntitySet read/writeable:
        config.SetEntitySetAccessRule("CommentEntitySet", EntitySetRights.All);
    }
}

この方法では、データサービスは、CommentEntitySetすべてのエンティティのデフォルトのアクセスルールを設定する最初の行の後に個々のエンティティセットへのアクセスルールをオーバーライドできる方法を説明するために含めた以外のエンティティセットへの変更を許可しませんに設定しますAllRead)。

于 2009-09-29T15:22:22.437 に答える