1

我有由实体框架定义的对象,然后我通过部分类向其中添加了其他方法和属性。我想我理解这样做的大部分限制,但想确认我所看到的东西(或者希望了解我需要做什么才能完成这项工作)。

我有一个部分类,它有一个只读属性,它使用几个项目来创建一个只读的计算字段。很高兴看到只读属性没有像我希望/期望的那样通过 ADO.Net 数据服务返回。即,我希望看到实体框架上的属性,并且通过部分类在代码中定义的属性来自数据服务调用。

是这样吗?当 ADO.Net 数据服务查询数据时,部分类是否完全被忽略?如果是这样,将只读类型属性添加到实体上的最佳做法是什么(因为我想避免将具有不同名称空间的相同部分类剪切并粘贴到客户端和服务器端代码库中)。

4

3 回答 3

3

来自 Microsoft 论坛帖子:(请参阅此处的完整帖子

“我想你在问“如何向 EF 提供程序公开的现有实体添加只读属性”?在 V1 中,没有好的方法可以做到这一点。对于 EF,我们使用 EF 加载元数据元数据 api,因此我们不做任何反射。因此,您可能通过部分类添加的其他属性将被忽略。

Astoria 还没有只读属性的概念。因此,如果我们公开任何其他不属于模型的属性,我们不知道如何在更新中处理它们。我们也不想在服务器中默默地丢失数据。”

所以看起来这是无法通过 ADO.Net 数据服务公开的功能。

于 2008-11-18T02:21:43.577 回答
2

这里有两个独立的关注点 - 基本模型 (EF) 和 WCF/mex 层。您的附加属性不会成为 edmx 模型的一部分,但我想知道这个问题是否与 WCF/mex 方面没有更多关系。

但是,即使它有效,ADO.NET 数据服务传输的是数据,而不是逻辑。所以依赖计算的属性不是一个安全的选择:客户端不会有公式——只有原始值。

要找出它是什么,请尝试使属性读/写(即使写入没有做任何有用的事情),并确保该值具有 [DataMember] 属性等。

于 2008-11-17T05:11:05.310 回答
-1

我认为问题在于使用 XML 序列化,它只使用 get 和 set 方法序列化属性。否则无法反序列化。将一个空的 set 方法添加到您的属性中,看看您是如何进行的。

于 2008-11-17T06:53:57.740 回答