1

エンティティ タイプの名前を esql ステートメントの結果の値として返せるようにする必要があるシナリオに遭遇しました。

問題はこれです。MVC3 アプリケーションの SelectList に渡される結果を返すために、esql ステートメントをビルドおよび実行する汎用ヘルパーが配置されています。

テキスト列は、モデルのプロパティに追加された属性から取得された式です。

したがって、たとえば、ドロップダウンに人の名前を姓としてリストする場合は、まず、「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 に答える