Entity Frameworkを使用すると、作業中のプロジェクトのデータベースにあるほとんどのsprocから具象クラスを作成できます。ただし、一部のsprocは動的SQLを使用するため、sprocのメタデータは返されません。
そのため、その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:指定されたキャストが無効です。デシリアライズで...