我的所有子类都有一个DBSet->基类是EventModel。当我尝试使用所有数据加载所有EventUpdateCartModel(EventModel的一个子类)时,子数据始终为null。基本值可以使用,例如SettingsModel或AccountModel。
如何使用基类DbSet而不是子类DbSet加载所有数据。
课程
public abstract class EventModel
{
... Some Other Datas
public virtual SettingsModel SettingsModel { get; set; }
public virtual AccountModel AccountModel { get; set; }
}
public class EventUpdateCartModel : EventModel
{
public virtual UpdateCartDataModel UpdateCartDatas { get; set; }
}
public class UpdateCartDataModel
{
public long UpdateCartDataId { get; set; }
public EventUpdateCartType Action { get; set; }
}
DbSet
public DbSet<EventModel> Events { get; set; }
读取行
var events = context.Events.ToList();
当我为子类添加新的DbSet并尝试使用此DbSet获取值时,所有值均可用。
DbSet
public DbSet<EventUpdateCartModel> Events_UpdateCart{ get; set; }
读取行
var events = context.Events_UpdateCart.ToList();
如何使用基类DbSet而不是子类DbSet加载所有数据。
我希望有人能帮助我。
答案 0 :(得分:0)
一种方法是将查询更改为返回仅包含模型中必要字段的匿名类型,并省略子DbSet。例如:
var events = context.Events_UpdateCart
.Select(u => new {
EventId = u.EventId,
EventType = u.EventType
});
进一步了解EF core docs。