代码之家  ›  专栏  ›  技术社区  ›  David Moye

实体框架4和SQL Server 2008 R2更改数据捕获不能很好地一起使用

  •  3
  • David Moye  · 技术社区  · 15 年前

    当我尝试同时使用这两个功能时,我的模型上会出现编译错误(注意,我已经重命名了我的表“contenthistory”的实体,我的SL4单元测试项目称为“domainservices.unit test”:

    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
    

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   David Moye    15 年前

    好吧,这是我为解决这个问题所做的工作。我确保我要启用CDC的每个表都有一个 LastModified 类型的列 datetime 。然后,我添加了一个键(从EF的角度来看),它由 上次修改时间 列和 __$operation 列。我认为这“可能是独一无二的”(这有点吓人,但可能还可以)。我的理由是 上次修改时间 精确到3毫秒左右,所以我(实际上)在CDC表中只得到2行相同的时间 上次修改时间 正在更新;但是,在更新时,这两行将具有不同的 _$操作 值(A 3和A 4)。所以,把它们组合在一起对一把钥匙来说至少有一点意义。我不太喜欢这个,希望EF4可以支持没有键的表。如果有人有什么建议,请告诉我。

    推荐文章