实体框架错误:指定的包含路径对虚拟实体无效
本文关键字:实体 路径 虚拟 无效 包含 框架 错误 | 更新日期: 2023-09-27 18:32:00
我遇到错误,大意是"指定的包含路径无效。实体类型'MyCMS.DAL.SiteSettings'不声明名为'SiteSettingOptions'的导航属性。
我已经读过很多关于这个问题的文章,但我所做的所有研究都与ICollections有关,而不是与类的属性有关。
这是我所在的地方,可以使用您的帮助解决问题。
[Table("SiteSettingsBridge")]
[DataContract]
public partial class SiteSettings
{
[Key]
[DataMember]
public int SiteSettingsBridgeID { get; set; }
[DataMember]
public int SiteID { get; set; }
[DataMember]
public int SiteSettingOptionID { get; set; }
[DataMember]
public virtual SiteSettingOptions SiteSettingOption { get; set; }
[DataMember]
[StringLength(500)]
public string Value { get; set; }
public SiteSettings()
{
SiteSettingsBridgeID = 0;
SiteID = 0;
SiteSettingOptionID = 0;
Value = "";
}
}
[DataContract]
public partial class SiteSettingOptions
{
[Key]
[DataMember]
public int SiteSettingOptionID { get; set; }
[DataMember]
public string SettingsGroup { get; set; }
[DataMember]
[StringLength(100)]
public string Name { get; set; }
[DataMember]
[StringLength(500)]
public string DefaultValue { get; set; }
[DataMember]
public SettingType Type { get; set; }
public enum SettingType
{
String = 1,
Bool = 2,
Integer = 3
}
public SiteSettingOptions()
{
SiteSettingOptionID = 0;
SettingsGroup = string.Empty;
Name = string.Empty;
DefaultValue = string.Empty;
Type = SiteSettingOptions.SettingType.String;
}
}
然后在我的 DAL 项目中,我尝试像这样将 Include 添加到上下文查询中
public static List<Contracts.Sites.SiteSettings> GetBySiteID(int SiteID)
{
using (CMSContext cntx = new CMSContext())
{
///OMITTED FOR BREVITY
return cntx.SiteSettings.Include("SiteSettingOptions").Where(i => i.SiteID == SiteID).ToList();
}
}
当我编译和运行时,我收到上述错误。
为了预先回答几个问题,我没有使用LazyLoad,也没有在模型创建上做任何事情。
是的,我是英孚的新手。这是我的第一个应用程序。
谢谢本...
您的属性称为SiteSettingOption (no s),但您正在尝试Include("SiteSettingOptions")
(注意最后的s)。删除最后的 s。您可以通过使用使用 lambda 而不是字符串的 Include 扩展来避免这种情况,这将类似于Include(x => x.SiteSettingOption)