使用實體框架我可以從我正在處理的項目的數據庫中的大多數sprocs創建具體類。但是,一些sprocs使用動態SQL,因此沒有爲sproc返回元數據。使用Dapper.Net ORM,如何將存儲過程輸出轉換爲具體類型?
因此,對於一個sproc,我手動創建了一個具體類,現在想要將sproc輸出映射到這個類並返回這種類型的列表。
使用下面的方法,我可以得到對象的集合:
var results = connection.Query<object>("get_buddies",
new { RecsPerPage = 100,
RecCount = 0,
PageNumber = 0,
OrderBy = "LastestLogin",
ProfileID = profileID,
ASC = 1},
commandType: CommandType.StoredProcedure);
我的具體類包含
[DataContractAttribute(IsReference=true)]
[Serializable()]
public partial class LoggedInMember : ComplexObject
{
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int16 RowID
{
get
{
return _RowID;
}
set
{
OnRowIDChanging(value);
ReportPropertyChanging("RowID");
_RowID = StructuralObject.SetValidValue(value);
ReportPropertyChanged("RowID");
OnRowIDChanged();
}
}
private global::System.Int16 _RowID;
partial void OnRowIDChanging(global::System.Int16 value);
partial void OnRowIDChanged();
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String NickName
{
get
{
return _NickName;
}
set
{
OnNickNameChanging(value);
ReportPropertyChanging("NickName");
_NickName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("NickName");
OnNickNameChanged();
}
}
private global::System.String _NickName;
partial void OnNickNameChanging(global::System.String value);
partial void OnNickNameChanged();
.
.
.
而不必通過的結果迭代和輸出參數添加到LoggedInMember對象,我如何實時映射這些數據,以便通過WCF服務返回它們的列表?
如果我嘗試var results = connection.Query<LoggedInMember>("sq_mobile_get_buddies_v35", ...
我得到以下錯誤:
System.Data.DataException: Error parsing column 0 (RowID=1 - Int64) ---> System.InvalidCastException: Specified cast is not valid. at Deserialize...