Entity framework 实体框架无法获取子元素
我有SQLite db和这些EF模型和上下文 模型和上下文Entity framework 实体框架无法获取子元素,entity-framework,sqlite,entity-framework-6,Entity Framework,Sqlite,Entity Framework 6,我有SQLite db和这些EF模型和上下文 模型和上下文 public class CardHolder { public int CardHolderId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string PhoneNumber { get; set; } public string EmailAd
public class CardHolder
{
public int CardHolderId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public string TenantName { get; set; }
public ICollection<AccessCard> AccessCards { get; set; }
}
public class AccessCard
{
public int AccessCardId { get; protected set; }
public CardHolder CardHolder { get; set; }
public DateTime ActivationDate { get; protected set; }
public bool ActivationProcessed { get; set; }
public DateTime? DeactivationDate { get; protected set; }
public string DeactivationReason { get; set; }
public bool DeactivationProcessed { get; set; }
}
public class MyContext : DbContext
{
public DbSet<CardHolder> CardHolders { get; set; }
public DbSet<AccessCard> AccessCards { get; set; }
}
问题1:为什么我会遇到这个异常
System.InvalidOperationException:'指定的包含路径不可用
有效。EntityType“SQLiteDemo.Models.candler”未声明
名为“AccessCard”的导航属性
如果我用
var cardHolders = db.CardHolders.Include("AccessCards").ToList();
我得到另一个错误:
SQL逻辑错误没有这样的列:Extent2.cardinger\u cardinger id
实体框架有什么问题?
问题2:为什么我不能在Include语句中使用arrow函数,它根本不编译?
问题3:如果我的ICollection关联属性AccessCard不是虚拟的,那么为什么我需要使用Include?这意味着即时加载必须自行工作强>
为什么他妈的它是如此的问题和马车?任何东西都无法正常工作:(1-您已经确定了输入错误:) 1B-“SQL逻辑错误无此类列:Extent2.持卡人\持卡人ID” EF找不到你的FK。您可以将其添加到AccessCard型号中:
public int CardHolderId { get; set; }
2-您需要引入LINQ扩展。确保在顶部有以下两个using语句:
using System.Data.Entity;
using System.Linq;
3-你和其他许多人一样,都是误解。即时加载仍然需要Include()
来获取相关数据。延迟加载仅在访问关系时获取它们。我有“使用System.Ling”,但没有“使用System.Data.Entity”,这就是为什么Link不能与EF实体一起工作。在AccessCard模型中添加了CardingID属性,解决了以下问题:)谢谢。
public int CardHolderId { get; set; }
using System.Data.Entity;
using System.Linq;