【问题标题】:Is this bad practice (am i doing this wrong)?这是不好的做法(我做错了吗)?
【发布时间】:2011-06-20 14:27:14
【问题描述】:

在 silverlight LOB 应用程序中,我使用 RIA 服务 (EF) 请求的结果填充 ItemsControl。 items 控件内部是一些自定义控件,其中一个控件中有一个用于删除实体的按钮。

要删除它,我将它附加到控件中的域上下文,然后将其删除。为了能够附加它,我在收到数据时在我的视图模型中执行此操作:

        foreach(var app in Apps.ToList())
        {
            _context.Apps.Detach(app);
        }

这是黑客行为吗?因为它确实感觉像一个。

【问题讨论】:

    标签: silverlight entity-framework mvvm ria


    【解决方案1】:

    模式的存在是为了为开发者服务,而不是反过来。您已经识别出臭代码。困扰你的事情。现在你必须做出两个选择。气味是否足以去除?以及如何移除它。

    一个建议。您不必将标准 CRUD 与 RIA 服务一起使用。您可以创建一个服务操作 DeleteApp,它采用 App 的 Id 并在数据库上执行删除。这将避免在客户端执行分离等操作。这是Transaction Script 模式的一个示例,就像我described in my article 一样,尽管这是一个非常初级的示例。完成此操作后不要忘记重新加载客户端列表,以免数据过时。

    在最极端的情况下,您可能想要研究命令查询分离。在这种情况下,您有两个单独的 DomainServices 一个是只读的,另一个是只写的。这会迫使您更明确地处理自己的行为,并更多地考虑您想做什么,而不是如何去做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多