EF4:使用添加服务参考导致STE(自我跟踪实体)的问题不记得有变化吗?

时间:2011-01-09 10:31:14

标签: wcf entity-framework-4 self-tracking-entities

我发现了一个问题,但它引用了VS 2010的BETA版本。我有兴趣知道RTM中是否修复了此问题?

基本上它陈述(通过EF 4 Self Tracking Entities does not work as expected看到它)

  

确保重复使用   自我跟踪实体模板   在您的客户端上生成实体代码。   如果您使用Add生成的代理代码   Visual Studio或Visual Studio中的服务引用   一些其他工具,事情看起来正确   大部分,但你会发现   实体实际上并没有保留   跟踪他们在客户端的变化。

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

如果我通过代码创建代理而不是添加服务,那么它们将不会创建所有类吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

要解决此问题,您必须做两件事:

  • 创建单独的程序集并将所有STE放置到此程序集中。然后在所有涉及的层中共享此程序集(是的,您必须在客户端中使用“添加引用”)。
  • 然后,您可以使用添加服务引用,并选中“在引用的程序集中重用类型”。