یادداشت های روزانه یک برنامه نویس

برنامه نویسی وب و اندروید ، برنامه نویسی با C# & JAVA، کار با پایگاه داده SQL Server

یادداشت های روزانه یک برنامه نویس

برنامه نویسی وب و اندروید ، برنامه نویسی با C# & JAVA، کار با پایگاه داده SQL Server

پر کردن مدل با stored procedure با EF Entity Framework

پر کردن مدل با stored procedure  با  EF  Entity Framework


کد کامل تابع اجرای این پروسه به صورت زیر است:


public static List<T> GetDataByParametrSP<T>(string SPName, DbContext context ,SqlParameter[] sqlParameter =null)

        {

            if (SPName == null || context == null)

            {

                //throw (new NullValueSend("Tabale name or Contex is null"));

                throw (new Exception("SPName name or Contex is null"));

            }

 

            List<T> result = new List<T>();

            string sqlp = " ";

            if (sqlParameter!=null)

            {

            foreach (var item in sqlParameter)

            {

                sqlp += " " + item.ParameterName;

            }

            result = context.Database.SqlQuery<T>(SPName+ sqlp, sqlParameter).ToList();

            return result;

            }

 

            result = context.Database.SqlQuery<T>(SPName).ToList();

            return result;

        }

پارامترهای این تابع به ترتیب 

1- نام  stored procedure موجود در دیتابیس

2- شی Context تعریف شده در برنامه برای ارتباط با دیتابیس

3- پارامترهای stored procedure به صورت آرایه این بخش میتواند خالی یا صورت Null ارسال شود یعنی هیچ پارامتری وجود نداشته باشد 

فقط به این نکته توجه کنید که تابع به صورت جنریک می باشد و قبل از استفاده باید نوع مدل را به صورت جنریک برای آن مشخص کنید 

خروجی این تابع یک لیست از مدل ارسال شده می باشد که توسط stored procedure پر شده است.

مثال 

  List<citylist =GetDataByParametrSP<city>("GetCity", db);


در مثال بالا  یک  stored procedure در دیتابیس وجود دارد که لیست شهرها را بر می گرداند.

در این مثال مدل City به صورت جنریک به تابع پاس داده شده  و خروجی تابع لیست از مدل شهر ها خواهد بود 

ارسال پارمترها به صورت اختیاری به stored procedure برای جستجو

ارسال پارمترها به صورت اختیاری به stored procedure برای جستجو


شکل ساده کد آن به صورت زیر می باشد:


SELECT Id, col1, col2, col3, col4

FROM    myTable

WHERE   (condition1 OR @Param1 IS NULL)

AND     (condition2 OR @Param2 IS NULL)

AND     (condition3 OR @Param3 IS NULL)

...

AND     (conditionN OR @ParamN IS NULL



یه نمونه عملی از اجرای این کد به صورت زیر می باشد:


SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

CREATE PROCEDURE  [dbo].[OMmaghaleViewPrsd]

 

@rownum int = null ,

       @maghaletypeID int = null,

       @countstep int = 5

AS

BEGIN

select * from OMmaghaleView

 where

 (RowCunter between @rownum and @rownum + @countstep or @rownum IS NULL or @rownum=-1) and

 (OMmaghaleTypeID= @maghaletypeID or @maghaletypeID =-1 or @maghaletypeID IS NULL )

END