Entity framework EF迁移清除缓存 公共A类 { 公共int Id{get;set;} 公共虚拟i集合{get;set;} } 公开课故事 { 公共int-AId{get;set;} 公共虚拟A{get;set;} }

Entity framework EF迁移清除缓存 公共A类 { 公共int Id{get;set;} 公共虚拟i集合{get;set;} } 公开课故事 { 公共int-AId{get;set;} 公共虚拟A{get;set;} },entity-framework,visual-studio,Entity Framework,Visual Studio,我把AHistories重命名为AHistory add-migration HistoMig AHistories:EntityType:EntitySet“AHistories”基于未定义键的类型“AHistory” 因此,错误会提到解决方案中不再存在的旧名称 我该怎么办 我已经清理了VisualStudio解决方案,没有任何效果 我还尝试注释掉导航属性,添加迁移,回滚迁移,取消注释,然后添加迁移;我仍然有这个错误 我已通过VS解决方案对字符串“ahistores”进行了搜索,找到0个事件

我把AHistories重命名为AHistory

add-migration HistoMig
AHistories:EntityType:EntitySet“AHistories”基于未定义键的类型“AHistory”

因此,错误会提到解决方案中不再存在的旧名称

我该怎么办

我已经清理了VisualStudio解决方案,没有任何效果

我还尝试注释掉导航属性,添加迁移,回滚迁移,取消注释,然后添加迁移;我仍然有这个错误


我已通过VS解决方案对字符串“ahistores”进行了搜索,找到0个事件。

根据ESG评论,我添加了:

public类DefaultContext:DbContext
{
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(新的AshiStoryMapping());
公共数据库集{get;set;}
}
}
公共类映射:EntityTypeConfiguration
{
公共映射()
{
HasKey(ah=>ah.AId);
}
}
现在可以了

编辑

实际上它不“工作”。。。它可以编译,但结果不是我所期望的

这段代码创建一个表,该表具有名为FundId的唯一标识符和名为Fund_Id的外键

我已将代码更改为

公共类映射:EntityTypeConfiguration
{
公共映射()
{
HasRequired(ah=>ah.A)
.WithMany(a=>a.ahistores)
.HasForeignKey(ah=>ah.AId);
}
}
它不再编译了。我又收到消息了

AHistory::EntityType“AHistory”未定义键。定义此EntityType的键。 AHistorys:EntityType:EntitySet“AHistorys”基于未定义键的类型“AHistory”

编辑2

事实证明,EF需要一个主键。以下是解决方案:

public class AHistoryMapping : EntityTypeConfiguration<AHistory>
{
    public AHistoryMapping()
    {
        HasKey(ah => new { ah.AId, Ah.Date });
        HasRequired(ah => ah.A)
        .WithMany(a => a.AHistorys)
        .HasForeignKey(ah => ah.AId);
    }
}
公共类映射:EntityTypeConfiguration
{
公共映射()
{
HasKey(ah=>new{ah.AId,ah.Date});
HasRequired(ah=>ah.A)
.WithMany(a=>a.ahistores)
.HasForeignKey(ah=>ah.AId);
}
}

根据ESG的评论,我添加了:

public类DefaultContext:DbContext
{
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(新的AshiStoryMapping());
公共数据库集{get;set;}
}
}
公共类映射:EntityTypeConfiguration
{
公共映射()
{
HasKey(ah=>ah.AId);
}
}
现在可以了

编辑

实际上它不“工作”。。。它可以编译,但结果不是我所期望的

这段代码创建一个表,该表具有名为FundId的唯一标识符和名为Fund_Id的外键

我已将代码更改为

公共类映射:EntityTypeConfiguration
{
公共映射()
{
HasRequired(ah=>ah.A)
.WithMany(a=>a.ahistores)
.HasForeignKey(ah=>ah.AId);
}
}
它不再编译了。我又收到消息了

AHistory::EntityType“AHistory”未定义键。定义此EntityType的键。 AHistorys:EntityType:EntitySet“AHistorys”基于未定义键的类型“AHistory”

编辑2

事实证明,EF需要一个主键。以下是解决方案:

public class AHistoryMapping : EntityTypeConfiguration<AHistory>
{
    public AHistoryMapping()
    {
        HasKey(ah => new { ah.AId, Ah.Date });
        HasRequired(ah => ah.A)
        .WithMany(a => a.AHistorys)
        .HasForeignKey(ah => ah.AId);
    }
}
公共类映射:EntityTypeConfiguration
{
公共映射()
{
HasKey(ah=>new{ah.AId,ah.Date});
HasRequired(ah=>ah.A)
.WithMany(a=>a.ahistores)
.HasForeignKey(ah=>ah.AId);
}
}

如果您使用
AHistories
类型进行了迁移,至少应该在您的旧迁移文件中,不是吗?在我们的上下文中,您的DbSet属性的名称是什么?如果您使用
AHistories
类型进行了迁移,至少应该在您的旧迁移文件中,不是吗?在我们的上下文中,您的DbSet属性的名称是什么?