過去幾天我在網上找過類似的話題。我終於自己動手問這個問題。實體框架存儲過程結果映射
使用代碼優先方法和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")]
)輸出映射我不能說出那樣的屬性:
[Column("Info/Data")]
public string InfoData
{
get { return infoData; }
set { infoData= value; }
}
我甚至使用逐字運營商([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
是一個類(名保安改變),InfoDatais
是屬性,我試圖用流利的API映射(相應的SQL列有/它;例如:信息/數據) 。
有沒有人遇到過這個問題?
如果我的問題不明確,或者有問題,請告訴我。
我想知道什麼樣的人名稱類/數據庫表「/」字符。 – 2012-04-13 22:56:41
這使我們兩個。我沒有寫過程。我被告知要使用這些數據。看到混淆現象是非常令人不安的。 – 2012-04-13 23:35:18
有沒有機會在結果中使用普通列名創建包裝器SP? – vittore 2014-03-23 07:17:49