实体框架6负载派生的实体类

时间:2019-06-14 15:45:11

标签: entity-framework entity-framework-6

在实体框架6中,给定class A并派生出class B: A,我想将实体A加载到B的实例中,而不必为每个属性进行编码。 / p>

所以给定了:

public class A
{
   public Guid AId { get; set; }
   public string Value { get; set; }
}

public class B: A
{
   [NotMapped]
   public string OtherValue { get; set; }
}

public MyDbContext: DbContext
{
   public DbSet<A> As { get; set; }
}

我想:

using (MyDbContext db = new MyDbContext())
{
   IEnumerable<B> Bs = db.As.LoadBsSomehow()
}

我猜我可以添加DbSet<B> Bs { get; set; },然后在OnModelCreate中可以将表名覆盖为As。如果可以的话,我想避免这种情况。

这样做的目的是我们需要视图模型,该视图模型需要基础模型以及一些其他属性,而我不想将模型与所有不同的视图模型属性搞混。这样可以简化主模型更改时的编码和维护-继承将自动处理派生类(视图模型)中的更改。

然后我可以用Bs或其他方法设置Select的其他属性。

此外,我不想使用反射。如果需要,我可以进行编码。我宁愿找出EF 6是否具有本机执行此操作的能力。

更新:我可以做DbContext.Database.SqlQuery<T>。我希望能够使用LINQ而不是编写SQL。我编写SQL没问题,但是从代码角度来看,LINQ的可维护性更高。也许我可以使用LINQ创建一个IQueryable<B>并为其获取SQL吗?

0 个答案:

没有答案