从 EF Core 5 迁移到 EF Core 6 时出错
Error on migrating from EF Core 5 to EF Core 6
从 EF Core 5 迁移到 EF Core 6 后,我的数据库模型出现问题。
在创建上下文时出现错误:字典中不存在给定的键。
示例应用回购:https://github.com/testApp6/TestApp
有什么问题吗?我该如何解决?
这看起来像是一个错误。所以它应该作为一个问题提出来 here.
用于处理您的属性的反射代码被您的显式接口实现弄糊涂了:
[ForeignKey(nameof(PostTypeEnum))]
[InverseProperty(nameof(Model.PostType.Posts))]
public PostType PostType { get; set; }
[NotMapped]
PostTypeCommon IPost.PostType => PostTypeEnum.ToCommon();
解决方法是从 Post 中删除属性:
[Table(nameof(PostType))]
public class PostType
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public virtual PostTypeEnum Enum { get; set; }
[MaxLength(20), Required]
public virtual string Code { get; set; }
//[InverseProperty(nameof(Post.PostType))]
public virtual ICollection<Post> Posts { get; set; }
}
您已经在 OnModelCreating 中的导航 属性 和 的另一侧配置了 Inverse属性。所以这里也不需要。
从 EF Core 5 迁移到 EF Core 6 后,我的数据库模型出现问题。
在创建上下文时出现错误:字典中不存在给定的键。
示例应用回购:https://github.com/testApp6/TestApp
有什么问题吗?我该如何解决?
这看起来像是一个错误。所以它应该作为一个问题提出来 here.
用于处理您的属性的反射代码被您的显式接口实现弄糊涂了:
[ForeignKey(nameof(PostTypeEnum))]
[InverseProperty(nameof(Model.PostType.Posts))]
public PostType PostType { get; set; }
[NotMapped]
PostTypeCommon IPost.PostType => PostTypeEnum.ToCommon();
解决方法是从 Post 中删除属性:
[Table(nameof(PostType))]
public class PostType
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public virtual PostTypeEnum Enum { get; set; }
[MaxLength(20), Required]
public virtual string Code { get; set; }
//[InverseProperty(nameof(Post.PostType))]
public virtual ICollection<Post> Posts { get; set; }
}
您已经在 OnModelCreating 中的导航 属性 和 的另一侧配置了 Inverse属性。所以这里也不需要。