【问题标题】:How to disable automapping of properties in Entity Framework如何在实体框架中禁用属性的自动映射
【发布时间】:2012-11-28 14:38:36
【问题描述】:

我决定在实体框架中使用流畅的映射。我的意图是通过没有任何属性和自动映射功能的代码映射所有内容。我发现的最佳方法是类 EntityTypeConfiguration,我为项目中的每个实体实现了它。

稍后我将属性添加到我的一个实体。这个属性不需要被持久化。我已经预料到,在我为这个属性添加映射之前,它会被数据库和持久层忽略。不幸的是,它不是那样工作的,并且属性是映射的。唯一的方法是使用 Ignore 方法或 NotMapped 属性,但我不想明确地这样做。

有什么方法可以阻止实体框架自动映射?我尝试从 DbModelBuilder 中删除所有约定,但没有帮助。

【问题讨论】:

    标签: entity-framework entity-framework-5 entity-framework-mapping


    【解决方案1】:

    据我所知,没有其他方法可以解决它。您需要使用Ignore()[NotMapped]。我更喜欢前者,因为它不会弄乱模型。

    【讨论】:

    • 好的,但这不是我们要求的。没有自动映射的属性是有原因的。想象一下,您添加了一个您不想映射的自定义属性。对于每个进入映射类并对其进行更改的情况,这将是一种矫枉过正,我为什么要在映射中提到一个未映射的属性?问题在此处提供更多详细信息:stackoverflow.com/questions/42249724/…
    • @baHI 此评论是否参考了其他链接的问题?上面的问题实际上是指排除特定属性。
    【解决方案2】:

    其实我尝试了很多方法: - 删除映射属性的自定义约定 - 删除所有约定

    但最简单(也是最干净)的方法是在映射类中使用反射并禁用所有未配置的属性映射。

    该代码(以及一个使用示例)在我的公开要点中。 https://gist.github.com/hidegh/36d92380c720804dee043fde8a863ecb

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多