1

我们遇到了一个场景,我们需要能够在 esql 语句的结果中将实体类型的名称作为值返回。

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

文本列是从添加到模型属性的属性中提取的表达式。

因此,例如,如果我们希望下拉列表将人名列为 Last,首先我们添加一个带有如下表达式的属性:'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

有谁知道我如何做到这一点?

4

1 回答 1

0

我之前忘了回过头来更新这个问题。我们最终采用的解决方案不是很优雅,但它为我们提供了我们需要的所有功能。

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

现在我们可以这样做:

SELECT it.[Id] AS Id, it.[EntityType].[Name] + " - " + it.[Name] AS Name
FROM OfType([AuditedObject], [DatumObject]) AS it
于 2013-01-23T17:21:01.483 回答