我使用WCF数据服务,并想使用POCOS。我必须指定一个dataservicekey才能工作(显然)。当我这样做时,我必须参考system.data.services.client(for system.data.services.common) - 这感觉不太好。

有没有办法使我的对象清洁并指定其他地方的密钥?

有帮助吗?

解决方案

如果您使用的是反射提供商,并且您的类不遵循关键属性的约定,则必须使用DataServiceKey属性。如果您只为数据服务服务提供类定义和上下文类,那么反射提供商是您获得的。因此,如果您不实施IDATASERVICEMETADATAPROVIDER,则很可能会使用反射提供商。可以使用反射提供商,而无需您类上的属性,但是WCF数据服务应用了启发式方法来找出关键属性。就像这样:

  • 如果所讨论的类具有称为ID的属性,则它是具有ID作为唯一键属性的实体。
  • 如果将类称为客户,并且具有称为CustomerID的属性,则它是具有CustomerID属性的实体,是唯一的钥匙属性(显然,该类的名称显然是示例)。

没有DataServiceKey属性,没有其他属性被认为是关键属性。例如,在此博客中也描述了这一点: http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-service-using-the-reflection-provider.aspx

可以使用具有任意关键属性的100%POCO类,但是您必须实现自定义提供商。这是更多的工作,因为您必须按计划定义课程的形状。可以在此处找到示例自定义提供商演练: http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top