gpt4 book ai didi

c# - SQL异常 : Invalid column name

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:20 25 4
gpt4 key购买 nike

我最近使用 EF Reverse Engineer Code First 将我现有的数据库转换为代码。在完善大部分结果后,我开始编写测试。我目前遇到的错误是试图访问名为“Element_ElementCode”的列名,但不存在这样的列。
为确保这一点,我对我的整个项目进行了搜索,以避免意外声明它的可能性。

Find all "Element_ElementCode", Subfolders, Find Results 1, Entire Solution, ""
Matching lines: 0 Matching files: 0 Total files searched: 120

具体错误如下:

System.Data.SqlClient.SqlException: Invalid column name 'Element_ElementCode'.

无效的列名“Element_ElementCode”重复了 10-15 次,堆栈跟踪没有提供任何线索。

执行包含检索数据的表达式并对其执行一些断言的测试时会发生此异常。

var doos = (dbContext.Elementen.Where(d => d.ElementCode == "DOOS9001")).FirstOrDefault();

这是 SQL Server 自身查询的结果: enter image description here

Element(在 Element.cs 内)具有以下字段:

ElementCode
Doelgroep
Type
Omschrijving
Titel

元素映射如下:

public class ElementenMap : EntityTypeConfiguration<Element> {
public ElementenMap() {

// Primary Key
this.HasKey(t => t.ElementCode);

// Properties
this.Property(t => t.ElementCode)
.IsRequired()
.HasMaxLength(255);

this.Property(t => t.Type)
.HasMaxLength(31);

this.Property(t => t.Doelgroep)
.HasMaxLength(255);

this.Property(t => t.Omschrijving)
.HasMaxLength(255);

this.Property(t => t.Titel)
.HasMaxLength(255);

// Table & Column Mappings
this.ToTable("Elementen");
this.Property(t => t.ElementCode).HasColumnName("ElementCode");
this.Property(t => t.Type).HasColumnName("Type");
this.Property(t => t.Doelgroep).HasColumnName("Doelgroep");
this.Property(t => t.Omschrijving).HasColumnName("Omschrijving");
this.Property(t => t.Titel).HasColumnName("Titel");

// Relationships
this.HasMany(t => t.Kernwoorden)
.WithRequired(t => t.Element)
.Map(m => m.ToTable("Kernwoorden"));
}
}

此外:我确定数据库已被访问,因为对同一数据库内不同表的其他测试成功。

我已尽力提供尽可能多的相关信息,如果我忘记了来源,请告诉我。为什么要尝试访问名为 Element_ElementCode 的列?这可能是我忘记关闭的约定(我已经不得不关闭 PluralizingTableNameConvention)了吗?

我应该寻找什么方向?

编辑:

Kernwoord.cs

public class Kernwoord {
public string ElementCode { get; set; }

public string KernwoordString { get; set; }

public virtual Element Element { get; set; }
}

元素.cs

public partial class Element {
public Element() {
this.LeertrajectElementen = new List<LeertrajectElement>();
this.Kernwoorden = new List<Kernwoord>();
}

public string ElementCode { get; set; }

public string Type { get; set; }

public string Doelgroep { get; set; }

public string Omschrijving { get; set; }

public string Titel { get; set; }

public virtual Casus Casus { get; set; }

public virtual Document Document { get; set; }

public virtual Doos Doos { get; set; }

public virtual ICollection<LeertrajectElement> LeertrajectElementen { get; set; }

public virtual StellingenSpel StellingenSpel { get; set; }

public virtual ICollection<Kernwoord> Kernwoorden { get; set; }
}

LeertrajectElementenMap.cs 片段:

 this.HasRequired(t => t.Element)
.WithMany(t => t.LeertrajectElementen)
.HasForeignKey(d => d.ElementCode);

编辑:

问题已通过修复现有的继承问题得到解决。

最佳答案

您没有指定关系的外键列名称。应该是:

this.HasMany(t => t.Kernwoorden)
.WithRequired(t => t.Element)
.Map(m => m.MapKey("ElementCode")); // FK column name in Kernwoorden table

或者,如果您在 Kernwoorden 类中有一个外键属性 ElementCode:

this.HasMany(t => t.Kernwoorden)
.WithRequired(t => t.Element)
.HasForeignKey(t => t.ElementCode);

关于c# - SQL异常 : Invalid column name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15733314/

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