我有以下型号:
public class Hotfix
{
public int? released_version { get; set; }
public virtual ReleaseVersion ReleasedVersion { get; set; }
}
在我的映射类(正确查看)中,我有:
this.Property(t => t.released_version).HasColumnName("released_version");
this.HasOptional(t => t.ReleasedVersion)
.WithMany(t => t.ReleaseVersionForHotfix)
.HasForeignKey(d => d.released_version);
但是,当我执行_context.Hotfixes.ToList()
之类的查询时,我会收到异常Invalid column name 'ReleaseVersion_id'.
。
当它被告知列应该映射到ReleaseVersion_id
时,为什么要查找released_version
列?
这是在现有数据库上使用CodeFirst
答案 0 :(得分:0)
好的,我终于弄明白了,显然这是由于某些代码未显示。当存在未映射的额外属性时,EF的流畅映射中似乎存在错误。我应该展示ReleaseVersion
结构,看起来像:
public class ReleaseVersion
{
public int id { get; set; }
public virtual ICollection<Hotfix> CurrentVersionForHotfix { get; set; }
public virtual ICollection<Hotfix> ReleaseVersionForHotfix { get; set; }
public virtual ICollection<Hotfix> hotfixes2 { get; set; }
}
额外的hotfixes2
属性有什么重要意义。这个属性是由EF 4.1 CodeFirst电动工具创建的,但是我没有删除它,因为我想让一切工作都先工作。
无论如何,hotfixes2
属性在修补程序EF配置映射类中没有关系映射,但由于某种原因,这一个额外属性导致整个修补程序配置被拒绝。只需从hotfixes2
POCO中删除ReleaseVersion
属性,即可使我的应用程序正常工作而不会出现错误。