【发布时间】:2017-10-29 09:52:37
【问题描述】:
我在使用预加载加载子实体时遇到问题,预加载在项目中的其他任何地方都可以正常工作,但它不适用于任何字符串外键。我的模型是:
public class Listing : BaseAudit<int>
{
public int? CommunityId { get; set; }
public string LotId { get; set; }
public Lot Lot { get; set; }
}
public class Lot : BaseAudit<string>
{
public ICollection<Listing> Listings { get; set; }
}
public class BaseAudit<T> : BaseId<T>
{
public BaseAudit()
{
CreatedDate = DateTime.Now;
}
public DateTime? CreatedDate { get; set; }
public string CreatedBy { get; set; }
public DateTime? UpdatedDate { get; set; }
public string UpdatedBy { get; set; }
}
public class BaseModel
{
public BaseModel()
{
Active = true;
}
public bool Active { get; set; }
}
public class BaseId<T> : BaseModel
{
public T Id { get; set; }
}
我正在尝试加载Listing 的Lot 属性,我已经尝试过:
_db.Listings.Where(m => m.CommunityId == communityId && m.LotId != null).Include(a => a.Lot).ToList();
我已经通过使用断点检查它是否生成了正确的 SQL,但它总是返回所有 Lot 属性为空。我无法弄清楚我在这里做错了什么。
【问题讨论】:
-
通常的嫌疑人:前导空格的差异,大小写。
-
@GertArnold 我也检查过,但如果是这种情况,那么生成的 SQL 将不会给出任何正确的结果。 SQL Generated 给出了预期的结果,但在
.ToList()之后,子实体为空。 -
生成的 SQL 给出了预期的结果 t 足够有说服力。您应该检查 SQL 查询本身是否返回预期结果。
-
您似乎试图在
Lots和Listings之间配置一对多的关系:每个Lot有零个或多个Listings,每个Listing恰好属于一个Lot。我是正确的,还是有不属于“列表”的“批次”? -
@SyedFarjadZiaZaidi 您在使用 EF6 吗?
标签: c# entity-framework ef-code-first