Entity framework 更新属性上的自跟踪实体不会更改其状态

Entity framework 更新属性上的自跟踪实体不会更改其状态,entity-framework,self-tracking-entities,Entity Framework,Self Tracking Entities,我已使用自跟踪实体,并执行以下操作: 1.-我创建了一个新实体 2.-我修改了它的一个属性,例如entityName=“Dummy” 修改之后,实体的状态仍然保持不变,因此当我执行applychanges时,它会执行任何操作 我尝试将其状态设置为“修改”,然后将更改保存到数据库中。但是在这种情况下,我有一个问题,因为如果我没有错的话,STE实现INotifyPropertyChanged接口,所以当我修改属性时,是notify,这是我想要的特性 我错了?也许当我改变一个属性时,实体的状态不会改变

我已使用自跟踪实体,并执行以下操作:

1.-我创建了一个新实体

2.-我修改了它的一个属性,例如entityName=“Dummy”

修改之后,实体的状态仍然保持不变,因此当我执行applychanges时,它会执行任何操作

我尝试将其状态设置为“修改”,然后将更改保存到数据库中。但是在这种情况下,我有一个问题,因为如果我没有错的话,STE实现INotifyPropertyChanged接口,所以当我修改属性时,是notify,这是我想要的特性

我错了?也许当我改变一个属性时,实体的状态不会改变

谢谢。 戴姆洛克

编辑:当我在使用WCF服务时获取实体,该服务使用EF4.0将查询结果发送到数据库时,也会出现此问题

EDIT2:我发现了错误

问题是我有一个dll项目,其中有tt文件和自跟踪实体

我有一个WCF服务,它引用了这个项目。此服务使用使用EF访问数据库的存储库

我有一个自主机应用程序,在其中我托管WCF服务。此应用程序没有对带有STE的dll的引用

我使用svcutil创建service.cs

我有一个客户端,我在其中添加了service.cs。service.cs如何使用STE创建我的dll项目的类。但是有一个问题,这个类并不是所有这些类都有。我的意思是,例如,有ChangeTracker属性,但它们没有MarkAs方法和其他方法

因此,如果我编辑service.cs来更改声明我的类的名称空间,并添加对带有STE类的项目的引用,那么我可以访问所有方法,并且也可以按预期工作

所以问题在于我的服务的“STE类”,而不是我的dll项目的STE类

为什么我生成service.cs时不生成“完整类”?这使我添加了一个对带有STE的dll项目的引用,并编辑service.cs,以删除带有其STE类的代码,这些STE类不能像我预期的那样工作。有没有办法在service.cs文件中包含“良好的STE类”

谢谢。 戴姆洛克

问题是我在WPF应用程序中托管了一个WCF服务。我运行self-host应用程序,并使用svcuti创建Service.cs


我在客户端应用程序中添加了这个Service.cs。在这个Service.cs中存在我的

您的描述太混乱了


STE使您的服务和客户机紧密耦合。使用STE的唯一正确方法是将它们放置到单独的程序集,并在客户端和服务之间共享此程序集。当您使用svcuti.exe为客户端应用程序创建服务引用时,您可以使用
reference
参数指定用于类型解析的程序集,而不是创建新的非STEs类型(用于添加服务引用的VS UI提供类似配置)。

当我使用/reference将外部dll与STE一起使用时,这些类没有添加到service.cs中,我必须在客户端中使用对我的STE.dll库的引用?或者svcutil会像生成非STEs类型时一样将类的代码添加到service.cs中?客户端也必须引用STE程序集。谢谢,这是我的想法,但我更愿意确认。