私はデータリーダーを使用してデータベースからデータをフェッチするコードを作成するように任命されました。デフォルトでフェッチされるデータリーダーからデータを変換するために以下で使用できる3つの方法のベストプラクティスがどうなるか知りたいです。オブジェクトのタイプ。
internal static RoomType SelectRoomType(int roomTypeID)
{
SqlCommand commRoomTypeSelector = ConnectionManager.MainConnection.CreateCommand();
commRoomTypeSelector.CommandType = CommandType.StoredProcedure;
commRoomTypeSelector.CommandText = "Rooms.asp_RMS_RoomType_Select";
commRoomTypeSelector.Parameters.AddWithValue("RoomTypeID", roomTypeID);
SqlDataReader dreadRoomType = commRoomTypeSelector.ExecuteReader();
if (dreadRoomType.FieldCount != 0)
{
dreadRoomType.Read();
RoomType roomType = new RoomType();
roomType.RoomTypeID = (int)dreadRoomType["RoomTypeID"];
roomType.RoomTypeName = (string)dreadRoomType["RoomType"];
roomType.IsActive = ((string)dreadRoomType["IsActive"]).ToUpper() == "Y";
roomType.LastEditDate = (string)dreadRoomType["LastEditDate"] != string.Empty ? DateTime.Parse((string)dreadRoomType["LastEditDate"]) : DateTime.MinValue;
roomType.LastEditUser = (string)dreadRoomType["LastEditUser"];
dreadRoomType.Close();
return roomType;
}
dreadRoomType.Close();
return null;
}
ここで私を混乱させるのは、開封の部分です。http://msdn.microsoft.com/en-us/library/yz2be5wk.aspxによると 、開封と開封は非常に費用がかかるため、避ける必要があります。私は私が使うことができることを知っています
int.Parse(dreadRoomType["RoomTypeID"].ToString())
それ以外の
roomType.RoomTypeID = (int)dreadRoomType["RoomTypeID"];
問題は、このオプションの両方よりもはるかに効率的な方法でこのデータを変換する方法がまだあることと、2つの方法のどちらを使用するかを選択できる方法がない場合です。事前に感謝しますすべてのヘルプと提案が受け入れられます:)