我遇到了“指定的包含路径无效”的错误。实体类型'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();
}
}
当我编译并运行时,我收到上述错误。
预先回答几个问题,我没有使用LazyLoading而且我没有在模型创建上做任何事情。
是的,我是EF的新手。这是我的第一个应用程序。
答案 0 :(得分:0)
谢谢Ben ......
您的属性称为SiteSettingOption(不是s),但您正在尝试Include("SiteSettingOptions")
(注意最终的s)。删除最后一个。您可以通过使用包含lambdas而不是字符串的Include扩展来避免这种情况,这类似于Include(x => x.SiteSettingOption)