【问题标题】:RIA Service Class Objects are not updatedRIA 服务类对象未更新
【发布时间】:2011-06-30 07:59:05
【问题描述】:

在我的 silverlight 项目中,我使用 RIA DomainDataService 从 asp.net 项目中获取对象。

public class MyObject
{
[Key]
public int Id{get;set;}
public double XValue {get;set;}
}

这是 RIA 服务中的静态对象 - 它的范围是类级别。

private static List<MyObject> Models = new List<MyObject>();

在 asp.net 项目中,我在模型中插入对象并在 silverlight 端获取它。稍后,我必须修改静态列表中的对象,但列表总是返回相同的对象,而不是对象的修改版本。

我修改对象如:

Models[0].XValue = 0.1;

在 RIA 服务上,我可以看到正在修改的列表。服务方法然后返回此对象,但 silverlight 获取相同的旧列表,而不是修改后的列表。

似乎 RIA 服务将对象保存在内存中并返回相同的对象。

如何编辑自定义类“MyObject”的属性值,以便 Silverlight 前端可以获取修改后的列表?我需要使 MyObject 可编辑吗?请指导。

找到了解决办法。如果我帮助过任何人,请在下面回答:-)

【问题讨论】:

    标签: c# asp.net silverlight


    【解决方案1】:

    RIA 是为使用数据库来存储对象而构建的——如果您不使用数据库,您可以使用标准的 WCF 服务并通过它返回您的 List。

    【讨论】:

    • 啊。这似乎有道理,有趣的是我也在考虑这个问题。为了澄清,您建议我应该创建一个具有静态 List 对象的 WCF 服务,并且我应该从 RIA 服务访问它?
    • RIA 只是一种特殊类型的 WCF 服务。如果您不使用数据库,则可以使用标准 WCF 服务没有 RIA - (msdn.microsoft.com/en-us/library/ms733766.aspx)
    • 没用。我创建了一个单独的项目,其中包含一个静态类“CachedData”,并且 CachedData 有一个静态属性:List。然后,我创建了一个 WCF 服务,该服务获取了更新后的 List 并传递给 RIA 服务。 RIA 服务也得到了更新的列表。但是silverlight一直收到它从第一次获得的OLD列表。然后我修改了一个项目并在列表中添加了一个项目,它显示了新项目,但修改后的对象处于其原始状态。所以我可以在列表中添加或删除一个对象,但我似乎无法修改列表中的一个对象并传递给 silverlight?
    • 找到了解决方案。如果我帮助过任何人,请在下面回答:-)
    【解决方案2】:

    如果对象的 Key 属性相同,RIA 服务将不会在客户端修改对象。即使我们修改了一个对象的其他属性,它也不会被拾取。如果我们要从 RIA 服务向客户端 Silverlight 应用程序发送一个列表,那么我们必须在修改后为对象的 Key 属性设置一个新值,以便刷新它并且 silverlight 可以获取更新的更改。

    因此,

    Create a public Guid UniqueID property in your XYZ class
    
    Add [Key] attribute to it
    
    When creating an object set its
    value to Guid.NewGuid()
    
    When updating an object, set its
    value to Guid.NewValue()
    

    如果要更新列表的所有 Guid 值,则可以使用匿名方法:

    MyList.Select(c => { c.UniqueID = Guid.NewGuid(); return c; }).ToList();
    

    希望对你有帮助

    【讨论】:

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