• Database Explorer
  • Execute
  • SQL Server
  • (masalan, 10%)
  • Saqlanadigan prodseduralar
  • Dasturiy injiniring (EntityFramework 6)




    Download 1,39 Mb.
    bet36/53
    Sana30.11.2023
    Hajmi1,39 Mb.
    #108476
    1   ...   32   33   34   35   36   37   38   39   ...   53
    Bog'liq
    Dasturiy injiniring

    BEGIN i END ifodasi orasida funksiya mazmuni joylashtiriladi. Bizning misolda WHERE operatori orqali Price ustuni qiymati @price dan kichik bo’lgan yozuvlardan iborat. Endi ushbu funksiyani DBda shakllantiramiz. Buning uchun Update tugmasini bosamiz:

    So’ngra, hosil qilingan muloqot oynasidagi Update Database tugmasini bosamiz:



    Shundan so’ng, Database Explorer oynasidagi Functions qismini topib, yangi hosil qilingan funksiyamizni ko’rishimiz mumkin. Endi biz ushbu funksiyani ishlatishimiz mumkin. Ushbu funksiyaga C# tilidan murojaat qilishdan avval, uning to’g‘ri ishlashini tekshiruvdan o'tkazamiz.
    Buning uchun ushbu funksiya nomiga sichqonchaning o’ng tugmasini bosamiz va hosil bo’lgan menyudan Execute qismini tanlaymiz:

    Shundan so’ng, funksiyaning kiruvchi parametrlari qiymatini kiritish oynasi shakllantiriladi. Ushbu muloqot oynasidagi Value maydonga funksiyaning @price parametriga mos qiymatni kiritish lozim:



    Shundan so’ng, Visual Studio funksiya chaqirish skriptini generatsiya qiladi:

    Yuqoridagi natijadan biz yaratgan funksiyaning to’g‘ri ishlashini anglash mumkin. Endi ushbu funksiyaga C# kodidan murojaat qilamiz:


    static void Main(string[] args)
    {
    using (PhoneContext db = new PhoneContext())
    {
    System.Data.SqlClient.SqlParameter param = new System.Data.SqlClient.SqlParameter("@price", 26000);
    var phones = db.Database.SqlQuery("SELECT * FROM GetPhonesByPrice (@price)", param);
    foreach (var phone in phones)
    Console.WriteLine(phone.Name);
    }
    Console.ReadKey();
    }

    Ushbu dasturda SQL Server da joylashgan, PhoneContext ma’lumotlar kontekstiga mos DBdagi GetPhonesByPrice funksiyasi (@price) parametri orqali chaqirilgan.


    Xuddi yuqoridagi tartibda chegirmaga mos narxni aniqlovchi funksiyani shakllantiramiz:
    CREATE FUNCTION [dbo].[GetPriceWithDiscount]
    (
    @discount int
    )
    RETURNS @returntable TABLE
    (
    Name nvarchar(50),
    Price decimal(8,3)
    )
    AS
    BEGIN
    INSERT @returntable
    SELECT Name, Price - Price * @discount / 100
    FROM Phones
    RETURN
    END

    Ushbu funksiya parametr sifatida chegirma foizini (masalan, 10%) qabul qiladi. Natija sifatida esa ikkita maydondan iborat jadvalni qaytaradi. Ushbu maydonlar model nomi va chegirma inobatga olingan narx.


    Funksiya yangi Name va Price xususiyatlardan iborat ob’ekt qaytarganligi, shuningdek Price xususiyatning decimal tipiga mansubligi sababli C# tilida mos klassni shakllantiramiz:
    class DiscountPhone
    {
    public string Name { get; set; }
    public decimal Price { get; set; }
    }
    Endilikda funksiya natijasini quyidagicha olishimiz mumkin:
    static void Main(string[] args)
    {
    using (PhoneContext db = new PhoneContext())
    {
    // 15% li chegirma
    System.Data.SqlClient.SqlParameter param = new System.Data.SqlClient.SqlParameter("@discount", 15);
    var phones = db.Database.SqlQuery("SELECT * FROM GetPriceWithDiscount (@discount)", param);
    foreach (var p in phones)
    Console.WriteLine("{0} - {1}", p.Name, p.Price);
    }
    Console.ReadKey();
    }

    Saqlanadigan prodseduralar



    Download 1,39 Mb.
    1   ...   32   33   34   35   36   37   38   39   ...   53




    Download 1,39 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturiy injiniring (EntityFramework 6)

    Download 1,39 Mb.