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

时间:2012-05-05 10:09:10

标签: entity-framework self-tracking-entities

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

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

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

修改后,实体的状态仍然没有改变,因此当我执行applychanges时,它会做任何事情。

我尝试将其状态设置为modified,然后将更改保存在数据库中。但是这样,我有一个问题,因为如果我没有错,STE实现了INotifyPropertyChanged接口,所以当我修改一个属性时,就是通知,这是我想要的一个功能。

我错了?也许当我更改属性时,实体不会更改其状态。

感谢。 Daimroc。

编辑:当我使用WCF服务时获取实体时会出现此问题,该服务使用EF 4.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类的代码,这些代码不能按预期工作。有什么方法可以在service.cs文件中找到“好的STE类”吗?

感谢。 Daimroc。

问题是我有一个WCF服务,我在WPF应用程序中托管。我运行自我主机应用程序,并使用svcutil创建Service.cs。

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

1 个答案:

答案 0 :(得分:2)

您的描述太混乱了。

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