【发布时间】:2012-04-13 21:20:26
【问题描述】:
使用实体框架,我可以从我正在处理的项目的数据库中的大多数存储过程中创建具体的类。但是,一些存储过程使用动态 SQL,因此不会为存储过程返回元数据。
所以对于那个 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:解析列 0 时出错 (RowID=1 - Int64) ---> System.InvalidCastException:指定的强制转换无效。在反序列化...
【问题讨论】:
标签: c#-4.0 stored-procedures sql-server-2008-r2 metadata dapper