gpt4 book ai didi

c# - EF Code First THE - 列 'Id' 指定为此 MSL 的一部分,在 MetaDataWorkspace 中不存在

转载 作者:太空狗 更新时间:2023-10-29 20:27:45 26 4
gpt4 key购买 nike

我在我的代码优先项目 (EF5) 中使用“每种类型一个表”层次结构。我的派生类覆盖了默认的主键名称,以从数据库的角度清楚地识别这种关系,如下所示:

/* change primary keys to Chair.ProductId and Table.ProductId */
modelBuilder.Entity<Chair>()
.Property(x => x.Id)
.HasColumnName("ProductId");

modelBuilder.Entity<Table>()
.Property(x => x.Id)
.HasColumnName("ProductId");

以下面的类为例:

[Table("Product")]
public class Product
{
public int Id {get; set;}

/* generic product properties */
}

[Table("Chair")]
public class Chair : Product
{
/* specific chair properties */
}

[Table("Table")]
public class Table : Product
{
public virtual ICollection<Chair> Chairs {get; set;}

/* specific table properties */
}

这会导致属性 Table.Chairs 出现以下错误:指定为此 MSL 的一部分的“Id”列在 MetaDataWorkspace 中不存在

我有点理解,因为 EF 可能没有看到 Chair Product 的 PK 已更改..(并且仍然假设它称为“Id”)但我无法弄清楚我如何指示 EF 使用备用键.

谢谢,

附言。是的,我知道,如果我不更改 PK 的名称,它就可以工作……但是可以使用 EF Fluent API 来完成吗?

最佳答案

这是 Visual Studio 中 EDMX 模型生成器的一些错误。

解决这个问题:

  • 从 EF 中删除特定表。
  • 保存 EF 并重新启动 Visual Studio
  • 再次将特定表添加到模型
  • 保存并编译

我有 Visual Studio 2015 更新版 3

关于c# - EF Code First THE - 列 'Id' 指定为此 MSL 的一部分,在 MetaDataWorkspace 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18614384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com