实体框架核心-子类值null

时间:2019-04-08 14:08:11

标签: c# entity-framework-core dbset

我的所有子类都有一个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();

null

当我为子类添加新的DbSet并尝试使用此DbSet获取值时,所有值均可用。

DbSet

 public DbSet<EventUpdateCartModel> Events_UpdateCart{ get; set; }

读取行

var events = context.Events_UpdateCart.ToList();

not null

**我的问题:**

如何使用基类DbSet而不是子类DbSet加载所有数据。

我希望有人能帮助我。

1 个答案:

答案 0 :(得分:0)

一种方法是将查询更改为返回仅包含模型中必要字段的匿名类型,并省略子DbSet。例如:

var events = context.Events_UpdateCart
                .Select(u => new {
                      EventId = u.EventId,
                      EventType = u.EventType
                });

进一步了解EF core docs