【问题标题】:Self Tracking entities and the mysterious ChangeTracker_ChangeTrackingEnabled datatable column自我跟踪实体和神秘的 ChangeTracker_ChangeTrackingEnabled 数据表列
【发布时间】:2012-06-20 17:05:59
【问题描述】:

我正在使用实现 IObjectWithChangeTracker 的自我跟踪实体,最后一个实体框架 RC 可用作 Nuget。目标数据库是 PostgreSQL。我还使用 Code First fluent API 来构建模型和 LINQ to Entity 来查询数据库。

令我惊讶的是,对实体的简单 SELECT 查询会生成一个带有神秘列 ChangeTracker_ChangeTrackingEnabled 的 SQL 查询,该列在数据表中不存在!我不理解这种行为,因为在我看来 EntityTypeConfiguration 派生类将实体属性映射到其构造函数中的数据表列。

有没有办法禁用这种行为,或者至少告诉更改跟踪器应该映射哪一列?

为此,Context.Configuration.AutoDetectChangesEnabled = false 或在 EntityTypeConfiguration 派生对象中调用 IsConcurrencyToken() 映射无济于事。

任何帮助表示赞赏。

TIA。

【问题讨论】:

    标签: entity-framework-4 ef-code-first self-tracking-entities


    【解决方案1】:

    您必须通过使用 NotMapped 属性标记属性或在流式 API 中使用 Ignore 来告知 EF 您希望在映射中避免的每个公共属性。

    顺便说一句。据我所知,STE 并非设计用于代码优先或 DbContext API。

    【讨论】:

    • 谢谢,添加 this.Ignore(t => t.ChangeTracker);在EntityTypeConfiguration派生类构造函数中解决了这个问题。
    • 关于您的其他评论,您在this thread 上建议的解决方案呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多