如何将实体与存储过程结果匹配(ASP.Net MVC与实体框架)

时间:2014-03-18 06:59:48

标签: asp.net entity-framework

我正在调用一个存储过程,该过程将需要5个输入,并将返回一组表数据。我创建了与存储过程结果匹配的类。如何使用类映射此存储过程结果?

我的存储过程将采用如下所示的6个参数

PROC_REZ_GETCHNAVL 7012,3,20130816,20130817,1,'INR' 

它将提供与下表完全相同的表集。

public class AvailableRooms { [Required] [Key] public int CUSTCODE { get; set; } public int CHANNID { get; set; } public string RATECODE { get; set; } public int RUNSRLNUB { get; set; } public string ROOMTYPE { get; set; } [Display(Name = "Room Name")] public string ROOMNAME { get; set; } public string ROOMSHTDESC { get; set; } public string ROOMLNGDESC { get; set; } public string ROOMFEATURES { get; set; } public int MAXADT { get; set; } public int MAXCHD { get; set; } public int TOTROM { get; set; } public char AVLFLG { get; set; } public int AVLROM { get; set; } public decimal OCCPER { get; set; } public string RATETYPE { get; set; } public string RATEPLAN { get; set; } public string RATEDESCRP { get; set; } public string RUNDAT { get; set; } [Display(Name = "Room Rate")] public decimal SGLRAT { get; set; } public decimal DBLRAT { get; set; } public decimal TRPRAT { get; set; } public decimal QUDRAT { get; set; } public decimal ADTRAT { get; set; } public decimal CHDRAT { get; set; } public decimal PLNSGLRAT { get; set; } public decimal PLNDBLRAT { get; set; } public decimal PLNTRPRAT { get; set; } public decimal PLNQUDRAT { get; set; } public decimal PLNEXTADTRAT { get; set; } public decimal PLNEXTCHDRAT { get; set; } public string ROOMIMG { get; set; } public string PRPSHORTDESC { get; set; } public string PRPLONGDESC { get; set; } public string PRPFEATURES { get; set; } public string TERMSCOND { get; set; } public string CACELPOLICY { get; set; } public string ROOMVID { get; set; } public string CHANNELDESC { get; set; } public int MAXPER { get; set; } public int EXTPER { get; set; } public int SEASONCODE { get; set; } private decimal _SGLTOTRATE; [DisplayFormat(DataFormatString = "{0:##,###}")] public decimal SGLTOTRATE { get { return makeFormat(_SGLTOTRATE); } set { _SGLTOTRATE = value; } } /// <summary> /// Room Rate Currency Format /// </summary> /// <param name="_sglTotRate"></param> /// <returns></returns> private decimal makeFormat(decimal _sglTotRate) { if (_sglTotRate.ToString().Contains('.')) _sglTotRate = Convert.ToDecimal(_sglTotRate.ToString("G29")); return _sglTotRate; } public decimal DBLTOTRATE { get; set; } public decimal EXTADTTOT { get; set; } public decimal EXTCHDTOT { get; set; } public decimal RACKSGL { get; set; } public decimal RACKDBL { get; set; } public decimal RACKADT { get; set; } public decimal RACKCHD { get; set; } public string MEALTYPE { get; set; } public int DISSEQ { get; set; } }

请告诉我如何使用存储过程将此类与DbContext ?????

映射

等待你的回复。

1 个答案:

答案 0 :(得分:0)

以下是解决方案。

命名空间WBE.Repository {     公共类WBERepository:WBEContext,IWBERepository     {

    /// <summary>
    /// Get All the available rooms with respect to input parameters
    /// </summary>
    /// <param name="roomAvailInputs"></param>
    /// <returns></returns>
    public List<RoomInventory> GetRoomInventory(List<InventoryInputs> roomAvailInputs)
    {

            using (var context = new WBEContext())
            {
                var CustCode = new SqlParameter
                {
                    DbType = DbType.Int32,
                    ParameterName = "CSTCOD",
                    Value = roomAvailInputs[0].CUSTCODE
                };

                var ChnlCode = new SqlParameter
                {
                    DbType = DbType.Int32,
                    ParameterName = "CHNCOD",
                    Value = roomAvailInputs[0].CHNCOD
                };

                var ArrDate = new SqlParameter
                {
                    DbType = DbType.String,
                    ParameterName = "ARRDAT",
                    Value = roomAvailInputs[0].ARRDAT
                };
                var DepDate = new SqlParameter
                {
                    DbType = DbType.String,
                    ParameterName = "DEPDAT",
                    Value = roomAvailInputs[0].DEPDAT
                };
                var NoRooms = new SqlParameter
                {
                    DbType = DbType.Int32,
                    ParameterName = "NBROOM",
                    Value = roomAvailInputs[0].NBROOM
                };

                var CurType = new SqlParameter
                {
                    DbType = DbType.String,
                    ParameterName = "CURTYP",
                    Value = roomAvailInputs[0].CURTYP
                };

              return context.Database.SqlQuery<RoomInventory>
                                ("PROC_REZ_GETCHNAVL @CSTCOD, @CHNCOD,  @ARRDAT, @DEPDAT, @NBROOM, @CURTYP",
                                CustCode, ChnlCode, ArrDate, DepDate, NoRooms, CurType).ToList<RoomInventory>();
            }