【问题标题】:DB4O with Silverlight RIA Services带有 Silverlight RIA 服务的 DB4O
【发布时间】:2009-08-25 17:50:17
【问题描述】:

我曾考虑将 db4o OODBMS 与最近的 Silverlight / RIA 服务项目一起使用,但有一点我可以使用一些建议 - 如何使关联起作用。 RIA 服务要求您使用 AssociationAttribute 标记所有关联实体。 AssociationAttribute 的构造函数要求您指定实体对关联实体的键,以及关联实体本身的键。

例如,假设我有一个带有 CarID 和 Car 属性的 Racer 类,以及一个带有 ID 属性的 Car 类。我的 Racer 课程看起来像这样:

class Racer
{
    public int ID { get; set; }
    public int? CarID { get; set; }
    [Association("Racer_Car", "CarID", "ID")]
    public Car Car { get; set; }
}

我看到使用 db4o(或任何 OODBMS)的问题是外键和主键不存在,也不需要存在 - 结果是我不需要 Racer.CarID 和 Car.ID特性。要使用 RIA 服务进行这项工作,我需要创建自己的唯一密钥,我不介意,我只是不知道这样做的最佳方法。

所以我的问题是“你将如何创建这些密钥/ID”?

由于没有任何自动递增生成字段的概念(我不知道有任何方式),我必须在尝试手动、安全递增键或使用类似 Guid 的东西之间做出选择。由于前者更难管理多用户和/或多线程,我想使用 Guid 将是最简单的解决方案。

所以让我们考虑使用 Guid。最简单的解决方案是创建我的 ID 属性,就像我在上面的示例中所做的那样,但使​​用 Guid 而不是 int。在创建新实体后,我需要将 ID 设置为新的 Guid - 然后,每当我设置 Racer.Car 属性时,我还需要设置 Racer.CarID。

手动操作很容易出错,所以我希望在属性 getter 和 setter 中处理很多内容,但我不确定实现它的最佳方法。


这就是我到目前为止所想到的。我想我会研究一下 Linq-to-SQL 生成的代码是如何处理其中一些问题的——也许我会在那里找到线索。

任何建议将不胜感激。

谢谢,
-查尔斯

【问题讨论】:

    标签: silverlight silverlight-3.0 db4o


    【解决方案1】:

    Db4o 确实在内部使用IDs and UUIDs,并且可以使用它们。另外值得一读的是this

    【讨论】:

      猜你喜欢
      • 2014-08-06
      • 2011-02-05
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多