私は過去数日間インターネットを介して私の質問と同様のトピックを探しました。私はついに自分自身でこの質問をしました。Entity Frameworkストアドプロシージャの結果のマッピング
コードファーストの方法論とEF 4.3.1を使用して、ストアドプロシージャの出力を格納するコンテキストクラス、エンティティクラス、およびクラスを作成しました。コンテキストクラスには、SqlQuery<T>
を使用して特定のストアドプロシージャを実行するメソッドがあります。
例:
public IEnumerable<Results> GetData(int id)
{
var parameters = new SqlParameter[] { new SqlParameter("@id", id) };
var result = this.Database.SqlQuery<Result>("Exec dbo.sproc_GetData @id", parameters);
var data= result.ToList<Result>();
return data;
}
私は私のデータ私のデバッグをトレースしていたように戻った、とデータが一致する名前を持つプロパティにマッピングされています。ただし、出力には名前に"/"
の列があります(例:Info/Data
)。 []
でテキストをラップする、
[Column("Info/Data")]
public string InfoData
{
get { return infoData; }
set { infoData= value; }
}
私もそのまま演算子([Column(@"Info/Data")]
)を使用してみました(:私は、列の属性([Column("Info/Data")]
)を使用して出力をマップすることができ考え出しので、もちろん、私はそのようなプロパティを指定することはできません[Column("[Info/Data]")]
)、私は両方を試しました([Column(@"[Info/Data]")]
)。コードをステップ実行すると、一致する列名のプロパティが割り当てられますが、列属性のプロパティは無視され、割り当て中にステップオーバーされます。
また、実体のすべての列に対してfluent-apiを試しました。
modelBuilder.ComplexType<Result>().Property(d => d.InfoData).HasColumnName("Info/Data");
それは次の例外をスロー:
データリーダが指定 'NameSpace.Result' と互換性がありません。型 'InfoData'のメンバには、同じ名前のデータリーダーに対応する列がありません。私のプロジェクト
NameSpace.Result
で
(対応するSQL列がその中に/を持っています。例:情報/データ)クラスである(名前はセキュリティのために変更)とInfoDatais
は、私は流暢-APIを使用してマップしよう性質であります。
誰もこの問題に遭遇しましたか?
私の問題が明確でない場合や、事前に尋ねられた場合は、事前にお知らせください。
私はどのような人の名前 "/"キャラクター。 –
それは私たちの2つを作る。私はprocを書かなかった。私はそのデータを使用するように言われました。エイリアシングが起こっているのを見るのは非常にうんざりでした。 –
結果に通常の列名を持つラッパーSPを作成する可能性はありますか? – vittore