2012-07-02 28 views
1

我们遇到了一种方案,我们需要能够将实体类型的名称作为esql语句结果中的值返回。如何在esql查询中获取实体类型的名称

问题是,我们有一个通用的帮助程序,它构建并运行一个esql语句,以返回传递给MVC3应用程序的SelectList的结果。

文本列是从添加到模型属性的属性取得的表达式。例如,如果我们想要下拉列表将一个人名称列为Last,First,我们将添加一个属性,如:'it。[LastName] +“,”+ it。[FirstName]' 其中产生像这样的语句:

SELECT it.[Id] AS Id, it.[LastName] + ", " + it.[FirstName] AS Name 
FROM OfType([AuditedObject], [User]) AS it 

我们碰到的涉及使用TPT在EF4.3抽象类型的场景。我们需要使用这个辅助方法枚举派生实体。该方法列举和精细返回所有派生实体时,我们只是希望这样的基本数据:

SELECT it.[Id] AS Id, it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 

但是,我们需要一种方法来表示每个实体是什么类型。像这样的伪代码:

SELECT it.[Id] AS Id, it.GetType().Name + " - " + it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 

有没有人有任何知识我可能会做到这一点?

回答

0

我忘了回到原处并更新此问题。我们最终选择的解决方案并不十分优雅,但它为我们提供了所需的全部功能。

我们最终在模型中添加了一个实体来表示具有链接它们的单向关联的根对象的类型。然后,我们使用t4模板生成一个脚本,将这些类型填充到新表中,并添加业务逻辑以确保每次调用SaveChanges()时都设置它。

现在我们可以做到这一点:

SELECT it.[Id] AS Id, it.[EntityType].[Name] + " - " + it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 
相关问题