2011-11-10 21 views
0

私は、Entity Frameworkを使用するnop commerce e-commerceオープンソース1.9を使用しています。ストアドプロシージャ関数からのカスタムプロパティをEntity Frameworkにマップします

彼らは今、私はlanguagesである1つの以上の列が自分でストアドプロシージャということと、そのSPの出し入れに変更するすべての製品をロードする1つのストアドプロシージャを持っているとsp_ProductLoadAllPaged機能

にそのストアドプロシージャをマップします。

また、product.csクラスファイルにlanguagesプロパティも宣言しています。

しかし、私はクイックウォッチを使用しているので、languagesの列はすべての製品でnullです。

.edmxファイルをモデルブラウザのデータベースから更新しました。

は、今私は、言語の一部のマッピング属性行方不明だということを確認したクラスとストアドプロシージャで

それでは、どの製品クラスの言語プロパティに、ストアドプロシージャのこの新しい列をマップする方法を教えてください。

あなたは、私がその製品の言語

SELECT 
     p.ProductId, 
     p.Name, 
     p.ShortDescription, 
     p.FullDescription, 
     p.AdminComment, 
     p.TemplateId, 
     p.ShowOnHomePage, 
     p.MetaKeywords, 
     p.MetaDescription, 
     p.MetaTitle, 
     p.SEName, 
     p.AllowCustomerReviews, 
     p.AllowCustomerRatings, 
     p.RatingSum, 
     p.TotalRatingVotes, 
     p.Published, 
     p.Deleted, 
     p.CreatedOn, 
     p.UpdatedOn, 
     p.AmazonLink, 
     p.ProductCode, 
     p.CategoryText, 
     STUFF((Select ','+ [Name] from Nop_Language where Nop_Language.LanguageId in 
    (Select Nop_ProductLocalized.LanguageID 
    from 
     Nop_ProductLocalized 
    where 
     ProductID=p.ProductId 
    ) for xml path('')),1,1,'') as 'languages' 
    FROM 
     #PageIndex [pi] 
     INNER JOIN Nop_Product p with (NOLOCK) on p.ProductID = [pi].ProductID 
    WHERE 
     [pi].IndexID > @PageLowerBound AND 
     [pi].IndexID < @PageUpperBound 
    ORDER BY 
     IndexID 
+0

@marc_sありがとうございました – rahularyansharma

答えて

0

にそれを得るために変更を加え、ストアドプロシージャ、最終的なSELECTステートメントを確認することができたようより多くの情報

mapping image

については、以下の画像を参照してください。クラスを変更するには十分ではありません。新しいプロパティはEDMXで認識され、EDMXのテンプレートはクラスのプロパティを生成する必要があります。

sp_ProductLoadAllPagedがエンティティの場合、EDMXにプロパティを手動で追加してマップする必要があります。複合タイプの場合は、関数インポートウィザードで複合タイプを更新する必要があります。両方のアプローチをEDMXで直接XMLとして開くこともできます(手動で変更する前に現在のバージョンをどこかに保存します)。

+0

編集を右クリックして機能を編集すると、複雑なタイプは無効になります。 – rahularyansharma

+0

.NET 4または3.5ですか? –

+0

@Mrnka is .net 3.5 sir – rahularyansharma

関連する問題