当使用TPH继承模型时,如何在EntityFramework中获取实体类型

时间:2014-11-27 08:45:39

标签: c# entity-framework entity-framework-6

我们使用Table Per Hierarchy(TPH)将继承的实体存储在EF6.1中(代码优先)。内部EF使用列Discriminator来保持实体的类型。

我可以使用OfType<>()扩展程序检索特定的实体类型。我甚至可以使用is运算符检查实体的类型。但我无法弄清楚如何检索实体类型本身。我们有几个实体的层次结构,我只需要检索几个属性(我不想加载整个实体),但还需要选择实体类型。目前的解决方案如下。这不是最理想的。有没有办法以更好的方式获得类型?

return DbSet.Where(o => o.Id == id)
    .SelectMany(o => o.BaseTransactions
    .Where(o => !(o is X00Transaction)))
    .Select(o => new TransactionInfoDto
    {
        TransactionId = o.Id,
        Amount = o.Amount,
        TransactionType =
            o is X01Transaction
                ? LoanDetailTransactionType.X01
                : o is X02Transaction
                    ? LoanDetailTransactionType.X02
                    : o is X03Transaction
                        ? LoanDetailTransactionType.X03
                        : o is X04Transaction
                            ? LoanDetailTransactionType.X04
                            : o is X05Transaction
                                ? LoanDetailTransactionType.X05
                                : LoanDetailTransactionType.X06,
    });

0 个答案:

没有答案