【问题标题】:Ria Services Entity with "Custom" Key具有“自定义”键的 Ria 服务实体
【发布时间】:2012-07-23 13:42:49
【问题描述】:

这是针对 RIA 服务应用程序的:

我们有一个实体A,看起来像:

ID   int (PK, identity)
Code string

Code 由两个字符前缀 AB、第二个两个字符前缀 CD 和一个四位整数组成。当实体被添加到数据库中时,用户应该输入ABCD作为代码,并且应用程序应该将最小可能的整数附加到代码中,该整数尚未在另一个带有AB前缀的代码中使用。例如,如果数据库看起来像:

ABCD0001
ABCD0002
ABEF0003
CDEF0001

并且用户输入前缀ABGH,代码应该是ABGH0004

会有多人同时使用这个应用程序,所以我不认为 Cient-Side 是一个很好的选择。有什么想法吗?

谢谢!

【问题讨论】:

  • 这确实是一个 SQL 问题,而不是 RIA 服务问题。
  • 我强烈反对。我完全有能力使用触发器在 SQL 中执行此操作。不过,这与 Ria 并不能很好地配合,所以我希望有一种方法可以从 DomainService 层做到这一点,或者是一种用 Ria 实现触发器的好方法......

标签: sql-server wcf-ria-services


【解决方案1】:

我认为如果您尝试在 RIA 服务或客户端内部执行此操作,您最大的问题是并发用户通过同时提交来破坏序列。

我的建议是使用数据库触发器来计算数据库中的这个值,这意味着任何同时提交都会得到正确的计算代码。

要使用新代码刷新客户端实体,因为我不相信它会在提交后自动更新,您需要使用 LoadBehavior.RefreshCurrent 再次将实体加载到客户端中以强制它用保存的值更新属性。

这很麻烦,但确实没有一个好方法可以仅在客户端执行此操作。

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多