Silverlight 4.0 EntityFramework4和SQLServer2008R2更改数据捕获不能很好地协同工作

Silverlight 4.0 EntityFramework4和SQLServer2008R2更改数据捕获不能很好地协同工作,silverlight-4.0,entity-framework-4,wcf-ria-services,sql-server-2008-r2,domainservices,Silverlight 4.0,Entity Framework 4,Wcf Ria Services,Sql Server 2008 R2,Domainservices,当我试图同时使用这两个功能时,我的模型出现编译错误(注意,我已将我的CT表的实体重命名为“ContentHistory”,我的SL4单元测试项目称为“DomainServices.UnitTest”: 这里有人让CDC和EF4配合得很好吗?好的,下面是我为解决这个问题所做的工作。我确保要启用CDC的每个表都有一个LastModified列,类型为datetime。然后,我添加了一个键(从EF的角度看)由LastModified列和\uuu$operation列组成。我认为这是“可能唯一的”(这有

当我试图同时使用这两个功能时,我的模型出现编译错误(注意,我已将我的CT表的实体重命名为“ContentHistory”,我的SL4单元测试项目称为“DomainServices.UnitTest”:


这里有人让CDC和EF4配合得很好吗?

好的,下面是我为解决这个问题所做的工作。我确保要启用CDC的每个表都有一个
LastModified
列,类型为
datetime
。然后,我添加了一个键(从EF的角度看)由
LastModified
列和
\uuu$operation
列组成。我认为这是“可能唯一的”(这有点吓人,但可能还可以)。我的推理是
LastModified
精确到3ms左右,所以我唯一可以(现实地)确定的时间更新时,在我的CDC表中获取两行具有相同的
LastModified
;但是,在更新时,这两行将具有不同的
\uuuu$operation
值(a 3和a 4)。因此,将它们组合在一起至少对密钥有一点意义。我不太喜欢这一点,希望EF4能够支持没有密钥的表。如果有人有建议,请告诉我。

好的,下面是分解方式。数据库中的CDC表没有主键。因此,EF4推断出密钥。这是没有做出好的选择。就此而言,我不确定什么是好的选择,因为binary(10)和varbinary(128)不是EF4中键列的有效类型。您只是试图使用EF来读取CDC表,对吗?重申一下,我不喜欢这个答案。这正是我所做的“勉强应付”而已如果有更好的答案,请有人插话:)
Error 39 Property 'DomainServices.Web.ContentHistory.C___seqval' is marked as a key
property and is of Type 'System.Byte[]', which is not a supported type for a key member.
DomainServices.UnitTests