我有Biller
,BillerReference
,BillerSetting
DbSet。
BillerReference
和BillerSetting
具有BillerId
作为外键关系。
这是Biller.cs
public class Biller : FullAuditedEntity
{
[Required]
public virtual string Name {get;set;}
public virtual decimal? Amount {get;set;}
public virtual List<BillerReference> BillerReferences {get;set;}
public virtual List<BillerSetting> BillerSettings {get;set;}
}
BillerReference.cs
public class BillerReference : FullAuditedEntity
{
[Required]
public virtual int? BillerId {get;set;}
[Required]
public virtual string Key {get;set;}
[Required]
public virtual string Value {get;set;}
}
BillerSetting.cs
public class BillerSetting : FullAuditedEntity
{
[Required]
public virtual int? BillerId {get;set;}
[Required]
public virtual string Name {get;set;}
[Required]
public virtual string URL {get;set;}
}
然后,我创建了BillerDbContext,其中还包括BillerReference DbSet和BillerSetting DbSet。 然后,我创建了BillerRepository。 然后,我在应用程序层中创建了BillerServiceAppService类。 当我如下调用GetBiller(int Id)函数
public async Task<BillerForEdit> GetBiller(int Id)
{
var biller = _billerRepo.GetAll()
.Include(x => x.BillerReferences)
.Include(x => x.BillerSettings)
.where(x => x.Id==Id);
//convert and assign data by ObjectMapper here !
//but, when got Biller object, BillerReferences and BillerSettings are Count=0!
在上面的函数中,我得到了Biller
,但这不是BillerReferences
和BillerSetting
。
请帮助我:D
答案 0 :(得分:0)
您的GetAll
函数似乎可以通过使用context.Billers.ToList()
之类的东西来全部获取。这两个列表将运行一个选择查询并调用数据。在此之后运行include将无法连接到数据库来获取您的BillerReferences
或BillerSetting
。
根据您的使用情况,最简单的解决方案是像这样实现GetAll类:
public IQueryable<Billing> GetAll() => context.Billers;