我有一個這樣的存盤庫基類:
public abstract class RepositoryBase<T> : IRepositoryBase<T> where T : class
{
protected RepositoryContext RepositoryContext;
public RepositoryBase(RepositoryContext repositoryContext)
=> RepositoryContext = repositoryContext;
public IQueryable<T> FindByCondition(Expression<Func<T, bool>>
expression, bool trackChanges)
{
return !trackChanges ?
RepositoryContext.Set<T>().Where(expression).AsNoTracking() :
RepositoryContext.Set<T>().Where(expression);
}
}
這可以很好地檢索單個物體。但是我怎樣才能修改它來檢索它的導航屬性呢?
我在 Stackoverflow 上看到了這種答案。但我不知道如何將它應用到我上面的基類中。任何幫助,請。
RepositoryContext.Model.GetEntityTypes()
.Select(t => new
{
t.ClrType.Name,
NavigationProperties = t.GetNavigations()
.Select(x => x.PropertyInfo)
});
我的查詢是這樣的:
public async Task<IEnumerable<Fare>>
GetAllFaresByUserAsync(string userId, bool trackChanges)
{
return await FindByCondition(e => e.UserId.Equals(userId),
trackChanges).ToListAsync();
}
模型是這樣的:我可以Fares使用上面的查詢獲取集合。但 "extras": [],問題就在這里嗎?
Fare
public class Fare
{
[Column("FareId")]
public Guid Id { get; set; }
public decimal? Amount { get; set; }
public int? Date { get; set; }
public decimal? FareTips { get; set; }
public ICollection<Extra>? Extras { get; set; }
[ForeignKey(nameof(User))]
public string? UserId { get; set; }
public User? User { get; set; }
}
Extra
public class Extra
{
[Column("ExtraId")]
public Guid Id { get; set; }
[Required(ErrorMessage = "Name is a required field.")]
public string? Name { get; set; }
[Required(ErrorMessage = "Amount is a required field.")]
public decimal? Amount { get; set; }
[ForeignKey(nameof(Fare))]
public Guid FareId { get; set; }
public Fare? Fare { get; set; }
[ForeignKey(nameof(User))]
public string? UserId { get; set; }
public User? User { get; set; }
}
uj5u.com熱心網友回復:
您應該看看如何將模型配置為自動包含導航屬性。AutoInclude模型構建器上有一種方法可以自動為您執行此操作。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Fare>().Navigation(f => f.Extras).AutoInclude();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461408.html
標籤:C# asp.net 核心 实体框架核心 .net-6.0 ef-core-6.0
上一篇:客戶端套接字拒絕連接和事件管理器說“無法確定重定向的https埠”?
下一篇:在ASP.NETCore3.1中使用多個connectionStringDINpgsqlConnectionpostgreSQL的正確方法
