1

我正在尝试在 Silverlight 客户端中显示 MySQL 服务器数据,而我目前的攻击计划是使用 Entity Framework 到 MySQL,并通过 RIA 服务提供 Silverlight 客户端和实体框架之间的数据访问。

但是,我只是试图向用户呈现数据,我不希望我或其他人能够更改 MySQL 中的数据。

简而言之,我希望有一种方法可以简单地忽略所有实体类型的设置器。我只想要吸气剂。我想要对 MySQL 的“只读”访问。但是,似乎我唯一的选择是将每个字段上的“Setter”更改为InternalPrivateProtectedPublic

有没有更好的方法来完成我想要做的事情?

4

2 回答 2

6

如果您使用 RIA 服务...

当您创建域服务类(本质上就是 RIA)时,它会弹出一个对话框,您可以单击“启用编辑”。在您的情况下,不要单击它,并且不会生成任何编辑功能。

RIA Services 用于连接服务器和客户端,它只能不生成 CRUD 的 CUD 部分

来自一些博客
(来源:silverlightshow.net

于 2009-09-29T15:50:36.763 回答
3

需要注意的是,我从未使用过 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 回答