C# 延迟加载不工作,相关实体始终为空
我对EF有问题。 重新分配的实体始终为空。到目前为止,我还没有找到任何解决方案 以下是模型:C# 延迟加载不工作,相关实体始终为空,c#,entity-framework,C#,Entity Framework,我对EF有问题。 重新分配的实体始终为空。到目前为止,我还没有找到任何解决方案 以下是模型: public class Categories { public int ID { get; set; } public string Name { get; set; } public int AtpID { get; set; } public virtual ICollection<SubCategories> SubCategories { ge
public class Categories
{
public int ID { get; set; }
public string Name { get; set; }
public int AtpID { get; set; }
public virtual ICollection<SubCategories> SubCategories { get; set; }
}
public class SubCategories
{
public int ID { get; set; }
public string Name { get; set; }
public int CategoryID { get; set; }
public string LinkToProducts { get; set; }
}
但entity.SubCategories始终为空
如果包含,则相关实体为空
var setting = (from s in db.Categories.Include("SubCategories")
where s.ID == 3
select s).FirstOrDefault();
在我的项目中,我有更多的相关实体,在这些实体中,延迟加载正在发挥作用
只有这些模型(类别和子类别)才有问题。
我做错了什么?试试这个:
public class SubCategories
{
public int ID { get; set; }
public string Name { get; set; }
[ForeignKey("CategoryID")]
public Categories Category { get; set; }
public int CategoryID { get; set; }
public string LinkToProducts { get; set; }
}
您的问题出在您的
子类别上。您必须按如下所示解决此问题
注意:在其上使用公共虚拟类别{get;set;}
。因此您没有这样做,EF不知道如何获取相关实体(或导航属性)当您使用包括或延迟加载时,从数据库中删除。此外,您还需要将类别ID
更改为类别ID
。因为您的模型名称为类别
public class SubCategories
{
public int ID { get; set; }
public string Name { get; set; }
[ForeignKey("CategoriesID")]
public virtual Categories Categories{ get; set; }//you have to do this
public int CategoriesID { get; set; }
public string LinkToProducts { get; set; }
}
在子类别
类中缺少导航属性:
public virtual Categories Categories { get; set; }
通过将子类别模型中的外键从CategoryId更改为categoresid,似乎解决了我的问题。
public class SubCategories
{
public int ID { get; set; }
public string Name { get; set; }
[ForeignKey("CategoriesID")]
public virtual Categories Categories{ get; set; }//you have to do this
public int CategoriesID { get; set; }
public string LinkToProducts { get; set; }
}
public virtual Categories Categories { get; set; }