Dav*_*len 7 c# entity-framework-core
我有以下辅助方法。这包括我的 Event DbSet 中的所有复杂属性(实际上有 9 个属性,但为了清楚起见我减少了它):
public static IQueryable<Event> IncludeAll(this IQueryable<Event> source)
{
return source
.Include(e => e.Description)
.Include(e => e.Tags)
.Include(e => e.Thumbnail);
}
Run Code Online (Sandbox Code Playgroud)
我使用它如下:
_event = await dbContext.Events
.IncludeAll()
.FirstOrDefaultAsync(e => e.Id == pkEvent);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我在该调用中收到警告,可能需要描述、标签和缩略图。并且在第一次使用每个时,再次警告它们可能为空。
有没有办法做类似以下的事情:
[MemberNotNull(nameof(Description))]
public static IQueryable<Event> IncludeAll(this IQueryable<Event> source)
Run Code Online (Sandbox Code Playgroud)
这具体是行不通的。
对我来说,我将这些导航属性定义为不可修改并null!为其赋值。
public class Event
{
public int Id {get; init;}
public Description Description {get; set;} = null!;
}
Run Code Online (Sandbox Code Playgroud)
我知道不建议使用null!赋值,但我发现这是一个很好的解决方案,我知道当我的代码中需要它时我会包含它。
为了对此做出更多限制,我使用规范模式访问我的数据,因此它只是包含导航属性的一种方法
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |