【问题标题】:How to introduce custom primitive key types to WCF Data Services (Astoria)如何将自定义原始键类型引入 WCF 数据服务 (Astoria)
【发布时间】:2010-04-07 10:57:10
【问题描述】:

我们在项目中使用自定义类型来表示标识符。它附加了 TypeConvertor,它总是有助于序列化。

我尝试使用 WCF 数据服务从我们的系统中公开一些数据,但遇到了一个问题。即使我用 [DataServiceKey("Id")] 属性修饰了类,Astoria 框架也不会将其识别为实体。如果我将属性类型更改为 Guid - 它完全有效:(。

如何教 WCF 数据服务理解这个简单的类?

【问题讨论】:

    标签: wcf wcf-data-services odata


    【解决方案1】:

    经过一些研究和大量反射器工作,我发现这是不可能的。

    WCF 数据服务具有巨大的外部元数据支持,由 Alex James 在非常好的系列 posts 中详细描述。

    但是,禁止创建原始数据类型,并且实体的关键属性应该是原始类型。此外,没有可用的执行前和执行后挂钩来提供从字符串类型到字符串类型的运行时转换。

    NHibernate 对 LINQ 的这种有限支持使得 Astoria 现在对我来说非常不可用。女巫很伤心。

    【讨论】:

      【解决方案2】:

      只要类有一个属性 ID,DataServices 就应该正确地序列化它。如果属性名为 ID,您甚至不需要该属性。你看到我做的例子了吗here。此外,您还可以在 http://www.Odataprimer.com 上找到与 OData 相关的文章的完整列表。也许其中之一会有所帮助。

      【讨论】:

      • 不,这不是真的。对于 System.Data.Services.Providers.ReflectionServiceProvider 键属性命名为 ether ID(大写 D)或 EntityNameID。
      • 没关系。无论如何感谢您的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多