שימוש הפעלה בסיסית של שאילתות SQL רגילות ב–Entity Framework

24 באוגוסט 2012

אין תגובות

לפעמים גם כשאנחנו עובדים עם Entity Framework עדיין נרצה להפעיל שאילתות SQL או stored procedure כלשהו.

בפוסט זה נראה כיצד לשלוח שאילתות בסיסיות לבסיס הנתונים בעזרת Native Sql, בפוסט הבא נראה כיצד אפשר לעשות זאת בעזרת מנגנון מיוחד הנקרא Functions.

להורדת דוגמת הקוד ובסיס הנתונים.

כך נראה בסיס הנתונים שלי:

image

 

נייצר עבורו מודל של Entity Framework ונרצה להפעיל שאילתות עליו (או הפעלה של SP).

ישנם שני פונקציות עיקריות, אחת ExecuteStoreCommand, מתודה זו מאוד דומה למתודת ExecuteNonQuery של Ado.net הסטנדרטית, והשימוש בה נראה כך:

private static void UsingExecuteStoreCommand(SP_EF_DEMOEntities context)

{

    Console.WriteLine("Enter name");

    string name = Console.ReadLine();

    int rowsAffect = context.ExecuteStoreCommand("INSERT INTO MyTable VALUES(@Name)",

                                                new SqlParameter("Name", name));

}

כמובן שניתן לשלוח שם של SP במקום לכתוב את השאילתא עצמה.

 

הפונקציה הנוספת נקראת ExecuteStoreQuery, פונקציה זו מעניינת במיוחד, היא יודעת לקבל את השאילתא, ואת סוג הערכים המוחזר, ולהחזיר את התוצאה, לדוגמא:

private static void UsingExecuteStoreQuery(SP_EF_DEMOEntities context)

{

    Console.WriteLine();

    Console.WriteLine("All names:");

    Console.WriteLine("========================");

 

    ObjectResult<string> names = context.ExecuteStoreQuery<string>("SELECT Name FROM MyTable");

 

    foreach (var item in names)

    {

        Console.WriteLine(item);

    }

}

הנקודה המעניינת שניתן גם לקבל מופעים של אובייקטים מתוך המודל, למשל:

private static void UsingExecuteStoreQuery2(SP_EF_DEMOEntities context)

{

    Console.WriteLine();

    Console.WriteLine("All names:");

    Console.WriteLine("========================");

 

    ObjectResult<MyTable> names = context.ExecuteStoreQuery<MyTable>("SELECT * FROM MyTable");

 

    foreach (var item in names)

    {

        Console.WriteLine("{0} – {1}", item.Id, item.Name);

    }

}

 

כפי שאפשר לראות זה די פשוט לעשות זאת, בפוסט הבא נראה את העבודה בעזרת ייבוא SP לתוך המודל בעזרת המיפוי שלהם ל – Function.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *