0

我发现了一个问题,但它指的是 VS 2010 的 BETA 版本。我想知道这个问题是否已在 RTM 中得到修复?

基本上它声明(通过EF 4 Self Tracking Entities 看到它没有按预期工作

确保在您的客户端上重用自我跟踪实体模板生成的实体代码。如果您使用由 Visual Studio 或其他工具中的添加服务引用生成的代理代码,大部分情况看起来都是正确的,但您会发现实体实际上并没有跟踪它们在客户端上的更改。

我非常习惯于使用添加服务参考,过去它对我来说总是很有效,但我当然没有使用 STE(自我跟踪实体)。VS 2010 RTM 和 STE 模板是否仍然存在此问题?

如果我确实通过代码而不是添加服务创建代理,那么所有类都不会被创建,不是吗?

任何帮助或见解真的很感激

4

1 回答 1

1

这不是问题,也从来不是问题。这是绝对预期和正确的行为。STE 是包含数据和逻辑的类(逻辑跟踪变化)。

添加服务引用时,您的客户端代理代码是从服务的元数据生成的。元数据以 WSDL 形式公开。WSDL 是基于 XML 的服务描述,其中还包含传输数据类型的 XSD 描述。XSD 只能描述数据格式,不能描述该类型实现的相关逻辑。默认情况下,WSDL 中描述的所有未知数据类型都是在客户端生成的。因此,当您通过添加服务引用生成具有所有数据类型的客户端代理时,跟踪逻辑就会丢失。

要克服这个问题,你必须做两件事:

  • 创建单独的装配并将所有 STE 放置到该装配中。然后在所有相关层之间共享此程序集(是的,您必须在客户端中使用添加引用)。
  • 然后,您可以使用“添加服务引用”并选中“在引用的程序集中重用类型”。
于 2011-01-09T13:21:57.527 回答