すべてのエンティティタイプのキープロパティは、ストレージ関数によって返される同じnull許容でない列にマップする必要があります

KingKerosin

ここで説明されているようにテーブル値関数を作成しましたhttp://www.entityframeworktutorial.net/EntityFramework5/table-valued-function-in-entity-framework5.aspx(EF6を使用)そしてそれをedmxにインポートしました。この後、Returns a collection ofを自分のエンティティMyTable(関数内で選択されている)に変更しました。

ただし、常に例外が発生します

関数importによって返されるすべてのエンティティタイプのキープロパティは、storage関数によって返される同じnull許容でない列にマップする必要があります。

生成された複雑な結果オブジェクトを調べると、すべてのプロパティがありますnullableが、エンティティMyTableにマップしたいのですが、そうではありません。

これは私の関数です(エンティティ自体を除く特定のエンティティからすべての子関係を取得するため):

CREATE FUNCTION [dbo].[fnGetChildren]
(   
    -- Add the parameters for the function here
    @Id uniqueidentifier
)
RETURNS TABLE 
AS
RETURN 
(
    -- Add the SELECT statement with parameter references here
    WITH childs  AS
    (
       SELECT * FROM MyTable WHERE Id = @Id
       UNION ALL
       SELECT MyTable.* FROM MyTable JOIN childs ON MyTable.ParentId = childs.Id
    )

    SELECT * FROM  childs WHERE Id <> @Id
)

この関数は、sql-server内で実行すると期待どおりに機能します。edmx-generationも実行されます。しかし、DbContextIを使用してクエリを実行しようとすると、このエラーが発生しました(function-importを呼び出すかどうかは関係ありません)。

これは関数自体、EFの問題ですか、それとも他に何か問題がありますか?

リストのISNULLキー列にを使用して、SELECTEFに値をNULL不可として認識させることができます

WITH childs  AS
(
   SELECT Id FROM MyTable WHERE Id = @Id
   UNION ALL
   SELECT MyTable.Id FROM MyTable JOIN childs ON MyTable.ParentId = childs.Id
)

SELECT ISNULL(Id, 0) FROM  childs WHERE Id <> @Id

でこれを行うことはできSELECT *ませんが、とにかくそれを行うべきではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ