Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf EF4:使用添加服务引用会导致STE(自跟踪实体)出现问题,不记得有更改吗?_Wcf_Entity Framework 4_Self Tracking Entities - Fatal编程技术网

Wcf EF4:使用添加服务引用会导致STE(自跟踪实体)出现问题,不记得有更改吗?

Wcf EF4:使用添加服务引用会导致STE(自跟踪实体)出现问题,不记得有更改吗?,wcf,entity-framework-4,self-tracking-entities,Wcf,Entity Framework 4,Self Tracking Entities,我发现了一个问题,但它指的是VS2010的测试版。我很想知道这个问题是否已经在RTM中解决了 基本上它是这样说的(通过 确保重复使用 自跟踪实体模板的 在客户端上生成的实体代码。 如果使用“添加”生成的代理代码 Visual Studio中的服务引用或 一些其他的工具,东西看起来很合适 大部分,但你会发现 实体实际上并没有保留 在客户端上跟踪其更改 我非常习惯于使用Add服务引用,过去它对我来说一直很有用,但我当然没有使用STE(自跟踪实体)。VS 2010 RTM和STE模板仍然存在这个问题吗

我发现了一个问题,但它指的是VS2010的测试版。我很想知道这个问题是否已经在RTM中解决了

基本上它是这样说的(通过

确保重复使用 自跟踪实体模板的 在客户端上生成的实体代码。 如果使用“添加”生成的代理代码 Visual Studio中的服务引用或 一些其他的工具,东西看起来很合适 大部分,但你会发现 实体实际上并没有保留 在客户端上跟踪其更改

我非常习惯于使用Add服务引用,过去它对我来说一直很有用,但我当然没有使用STE(自跟踪实体)。VS 2010 RTM和STE模板仍然存在这个问题吗

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


任何帮助或真知灼见都值得赞赏

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

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

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

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

谢谢Ladislav,在外部程序集中实现我的类型(ste)是我无论如何都想做的事情,所以这对我来说是一个加号。我认为神奇之处在于使用Add服务引用时——引用的assemblied中的重用类型选项是允许工作的。你能解释一下这和仅仅做一个添加服务引用有什么区别吗??再次感谢。当使用“仅添加服务引用”而不重用您的类型时,生成器会在您的客户端应用程序中创建新类型。这些类型不包含STE跟踪逻辑。