代码之家  ›  专栏  ›  技术社区  ›  uriDium

在使用linq to entities和wcf时,是否有方法将entitykey和extensiondata访问更改为protected?

  •  0
  • uriDium  · 技术社区  · 15 年前

    对于我们正在做的一些项目,我一直在研究使用带有wcf的linq-to实体。到目前为止一切都很顺利,但有一件事我不太确定。LinqToEntities正在创建具有EntityKey和ExtensionData属性的对象。我对他们在服务中的访问感到高兴,但我担心的是,客户机似乎也可以访问这个,因为他们是EntityObject类中的公共属性。

    在我看来,这会导致实现泄漏,因为客户机不应该知道这个对象是使用linq to实体获得的。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Ladislav Mrnka    15 年前

    不能更改访问修饰符,因为EntityKey属性是从父EntityObject类继承的,该类将其显示为公共的。ExtensionData属性与实体框架无关。它由IExtensibleDataObject定义,该对象在从Visual Studio或svcUtil生成的所有WCF代理中实现。同样,您不能更改它的访问修饰符。

    这通常是人们不在WCF中将实体作为数据契约公开的原因。如果使用EFv4.0,则可以使用POCO类或自跟踪实体,而不是重型实体。如果不使用EFv4.0,则应创建单独的数据传输对象或尝试实现 DataContractSurrogates 为你的实体。