在不修改实体类(注释)或数据上下文(使用 fluentapi)的情况下禁用标识(自动递增)
Posted
技术标签:
【中文标题】在不修改实体类(注释)或数据上下文(使用 fluentapi)的情况下禁用标识(自动递增)【英文标题】:Disabling identity (auto-incrementing) without modifying entity classes (annotations) or datacontext (using fluentapi) 【发布时间】:2022-01-09 02:24:22 【问题描述】:有没有办法在不更改dbcontext
或实体的情况下临时禁用(实体框架 6+,代码优先)身份增量以用于数据迁移目的。是否有任何数据库全局属性、方法等或任何拦截器注入或任何其他方式来完成此操作。
假设我们不能修改数据上下文或实体类。因此,我将无法使用数据注释或流畅的 API 来更改身份增量行为。 DataContext
和实体类在另一个项目中,不应修改,因为它们正在被其他一些应用程序使用。所有实体都使用
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
对其 ID 属性的注释。
有没有人遇到过类似情况或知道如何解决。
提前致谢。
【问题讨论】:
【参考方案1】:您可以添加一个特殊用途的 DbContext 子类型来覆盖 OnModelCreating 中的基本配置。
【讨论】:
感谢大卫回复。您是否建议在派生的 DbContext 上为每个实体使用 FluentApi 配置?如果是这样,我不喜欢这样做。我必须将所有新模型更改反映到我的新派生类中。而且我不知道 fluent api 是否会覆盖已经定义的数据注释。这个解决方案可能是我最后的选择。以上是关于在不修改实体类(注释)或数据上下文(使用 fluentapi)的情况下禁用标识(自动递增)的主要内容,如果未能解决你的问题,请参考以下文章