2009-04-15 10 views
1

最後に、L2Eフレームワークをチェックアウトして、ほとんど瞬時に問題に遭遇しました。
ええ、私は知っている...私は前にいくつかの本を読む必要があります。L2Entities、ストアドプロシージャおよびマッピング

状況:小道具と

エンティティ - > idと名前。
エンティティは、ID列と名前列を持つテーブルにマップされます。
sproc、これはid列のみを返します。

問題:エラーを発生します。この呼び出し

ObjectResult<MyProp> result = _container.MyStoredProcedure(uberParameter); 

[有罪方法はここに行く]投げた例外: System.Data.EntityCommandExecutionException:データリーダーは、指定と互換性がありません " DataBase.MyPropTableObject '。タイプのメンバー、「名前」、同じ名前のデータリーダーの対応する列を持っていません。..

問題#2:

Can`t、そのフィールドを「単に返します」その列にはXMLデータ型がありますが、sprocは次のような複雑なselect文を使用します。

メッセージ421、レベル16、状態1、行1 xmlデータ型は比較できないためDISTINCTとして選択できません。

質問:
それは排他的にこれだけのSPROCために、このエンティティの小道具のためのマッピングをオフにすることは可能ですか?

答えて

1

問題1は、procがエンティティを移入する列を持たないためです。あなたがテーブルをマッピングした場合は、本当にあなたに与えられたidのテーブルの名前列の値を与えるだろうLINQ

var result = MyEntities.EntityIMapped.First(r => r.id = uberParameter).Name; 

を使用して、あなたがそれからするフィールドを選択し、PROCを必要としません。このためにストアドプロシージャを使用する必要はありません。

問題2はprocにあるように聞こえますが、xmlデータ列では別のものが多くの結果をもたらすと思いますが、私はあなたの解決策を知らないので推測しています。

これはあなたの質問のための直接的な答えではありませんが、うまくいけば正しい方向にあなたを指し示すでしょう。

+0

Sprocに触れてはいけません。ランキング、ページングなどのフルテキスト検索機能を備えています。そのため、XMLデータ型の列を処理できません。 この問題はしばらく時間がかかりましたが、私はそれを管理しました。私は除外された小道具と冗長なビューを持つ冗長なエンティティを作成しなければなりませんでした(少なくともl2e conf xmlではデータベースで無視できます)。 どこか読んでください。次回のアップデートで問題になることはありません。 –

関連する問題