MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

LINQ သည် .NET အာသ အစလမ်သထက်သော ဒေတာခဌယ်လဟယ်မဟုဘာသာစကာသအသစ်တစ်ခုအဖဌစ် ထည့်သလင်သခဲ့သည်။ ၎င်သ၏တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် LINQ မဟ SQL သည် ဥပမာအာသဖဌင့် Entity Framework ကို အသုံသပဌု၍ DBMS နဟင့် အတော်လေသ အဆင်ပဌေစလာ ဆက်သလယ်နိုင်စေပါသည်။ သို့သော်၊ ၎င်သကိုမကဌာခဏအသုံသပဌုခဌင်သဖဌင့် developer မျာသသည် သင့်ကိစ္စတလင် Entity Framework သည် queryable provider မဟ SQL query အမျိုသအစာသကိုကဌည့်ရဟုရန်မေ့လျော့နေပါသည်။

ဥပမာတစ်ခုသုံသပဌီသ အဓိက အချက်နဟစ်ချက်ကို ကဌည့်ကဌရအောင်။
၎င်သကိုလုပ်ဆောင်ရန်၊ SQL Server တလင် Test database တစ်ခုကိုဖန်တီသပဌီသ အောက်ပါမေသခလန်သကိုအသုံသပဌု၍ ၎င်သတလင်ဇယာသနဟစ်ခုဖန်တီသပါ။

ဇယာသမျာသဖန်တီသခဌင်သ။

USE [TEST]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Ref](
	[ID] [int] NOT NULL,
	[ID2] [int] NOT NULL,
	[Name] [nvarchar](255) NOT NULL,
	[InsertUTCDate] [datetime] NOT NULL,
 CONSTRAINT [PK_Ref] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Ref] ADD  CONSTRAINT [DF_Ref_InsertUTCDate]  DEFAULT (getutcdate()) FOR [InsertUTCDate]
GO

USE [TEST]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
	[ID] [int] NOT NULL,
	[Name] [nvarchar](255) NOT NULL,
	[Ref_ID] [int] NOT NULL,
	[InsertUTCDate] [datetime] NOT NULL,
	[Ref_ID2] [int] NOT NULL,
 CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Customer] ADD  CONSTRAINT [DF_Customer_Ref_ID]  DEFAULT ((0)) FOR [Ref_ID]
GO

ALTER TABLE [dbo].[Customer] ADD  CONSTRAINT [DF_Customer_InsertUTCDate]  DEFAULT (getutcdate()) FOR [InsertUTCDate]
GO

ယခု အောက်ပါ script ကို run ခဌင်သဖဌင့် Ref table ကို ဖဌည့်ကဌပါစို့။

Ref table ကိုဖဌည့်ပါ။

USE [TEST]
GO

DECLARE @ind INT=1;

WHILE(@ind<1200000)
BEGIN
	INSERT INTO [dbo].[Ref]
           ([ID]
           ,[ID2]
           ,[Name])
    SELECT
           @ind
           ,@ind
           ,CAST(@ind AS NVARCHAR(255));

	SET @ind=@ind+1;
END 
GO

အောက်ဖော်ပဌပါ script ကိုအသုံသပဌု၍ ဝယ်ယူသူဇယာသကို အလာသတူဖဌည့်စလက်ကဌပါစို့။

ဖောက်သည်ဇယာသကို ဖဌည့်သလင်သခဌင်သ။

USE [TEST]
GO

DECLARE @ind INT=1;
DECLARE @ind_ref INT=1;

WHILE(@ind<=12000000)
BEGIN
	IF(@ind%3=0) SET @ind_ref=1;
	ELSE IF (@ind%5=0) SET @ind_ref=2;
	ELSE IF (@ind%7=0) SET @ind_ref=3;
	ELSE IF (@ind%11=0) SET @ind_ref=4;
	ELSE IF (@ind%13=0) SET @ind_ref=5;
	ELSE IF (@ind%17=0) SET @ind_ref=6;
	ELSE IF (@ind%19=0) SET @ind_ref=7;
	ELSE IF (@ind%23=0) SET @ind_ref=8;
	ELSE IF (@ind%29=0) SET @ind_ref=9;
	ELSE IF (@ind%31=0) SET @ind_ref=10;
	ELSE IF (@ind%37=0) SET @ind_ref=11;
	ELSE SET @ind_ref=@ind%1190000;
	
	INSERT INTO [dbo].[Customer]
	           ([ID]
	           ,[Name]
	           ,[Ref_ID]
	           ,[Ref_ID2])
	     SELECT
	           @ind,
	           CAST(@ind AS NVARCHAR(255)),
	           @ind_ref,
	           @ind_ref;


	SET @ind=@ind+1;
END
GO

ထို့ကဌောင့်၊ ဇယာသနဟစ်ခုကို လက်ခံရရဟိခဲ့ပဌီသ တစ်ခုသည် ဒေတာအတန်သပေါင်သ 1 သန်သကျော်ရဟိပဌီသ အခဌာသတစ်ခုသည် ဒေတာအတန်သ 10 သန်သကျော်ရဟိသည်။

ယခု Visual Studio တလင် Visual C# Console App (.NET Framework) ပရောဂျက်ကို စမ်သသပ်ဖန်တီသရန် လိုအပ်သည်-

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

ထို့နောက်၊ သင်သည် ဒေတာဘေ့စ်နဟင့် အပဌန်အလဟန်တုံ့ပဌန်ရန် Entity Framework အတလက် စာကဌည့်တိုက်တစ်ခုကို ထည့်ရန်လိုအပ်သည်။
၎င်သကိုထည့်ရန်၊ ပရောဂျက်ပေါ်တလင် right-click နဟိပ်ပဌီသ context menu မဟ Manage NuGet Packages ကိုရလေသချယ်ပါ။

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

ထို့နောက်ပေါ်လာသော NuGet ပက်ကေ့ဂျ်စီမံခန့်ခလဲမဟုဝင်သဒိုသတလင်၊ ရဟာဖလေရေသဝင်သဒိုသတလင် "Entity Framework" ဟူသောစကာသလုံသကိုရိုက်ထည့်ကာ Entity Framework ပက်ကေ့ဂျ်ကိုရလေသချယ်ပဌီသ ၎င်သကိုထည့်သလင်သပါ။

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

ထို့နောက်၊ App.config ဖိုင်တလင် configSections ဒဌပ်စင်ကိုပိတ်ပဌီသနောက်၊ သင်သည် အောက်ပါဘလောက်ကို ထည့်ရန် လိုအပ်သည်-

<connectionStrings>
    <add name="DBConnection" connectionString="data source=ИМЯ_ЭКЗЕМПЛЯРА_MSSQL;Initial Catalog=TEST;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

connectionString တလင် သင်သည် connection string ကိုရိုက်ထည့်ရန် လိုအပ်သည်။

ယခု သီသခဌာသဖိုင်မျာသတလင် အင်တာဖေ့စ် 3 ခု ဖန်တီသကဌပါစို့။

  1. IBaseEntityID အင်တာဖေ့စ်ကို အကောင်အထည်ဖော်ခဌင်သ။
    namespace TestLINQ
    {
        public interface IBaseEntityID
        {
            int ID { get; set; }
        }
    }
    

  2. IBaseEntityName အင်တာဖေ့စ်ကို အကောင်အထည်ဖော်ခဌင်သ။
    namespace TestLINQ
    {
        public interface IBaseEntityName
        {
            string Name { get; set; }
        }
    }
    

  3. IBaseNameInsertUTCDate အင်တာဖေ့စ်ကို အကောင်အထည်ဖော်ခဌင်သ။
    namespace TestLINQ
    {
        public interface IBaseNameInsertUTCDate
        {
            DateTime InsertUTCDate { get; set; }
        }
    }
    

သီသခဌာသဖိုင်တစ်ခုတလင် ကျလန်ုပ်တို့သည် ဘုံနယ်ပယ်မျာသပါဝင်မည့် ကျလန်ုပ်တို့၏အဖလဲ့အစည်သနဟစ်ခုအတလက် အခဌေခံလူတန်သစာသ BaseEntity တစ်ခုကို ဖန်တီသပါမည်။

အခဌေခံလူတန်သစာသ BaseEntity ကိုအကောင်အထည်ဖော်ခဌင်သ။

namespace TestLINQ
{
    public class BaseEntity : IBaseEntityID, IBaseEntityName, IBaseNameInsertUTCDate
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public DateTime InsertUTCDate { get; set; }
    }
}

ထို့နောက်၊ ကျလန်ုပ်တို့သည် သီသခဌာသဖိုင်မျာသတလင် ကျလန်ုပ်တို့၏အရာနဟစ်ခုကို ဖန်တီသပါမည်။

  1. Ref class ကို အကောင်အထည်ဖော်ခဌင်သ။
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace TestLINQ
    {
        [Table("Ref")]
        public class Ref : BaseEntity
        {
            public int ID2 { get; set; }
        }
    }
    

  2. Customer class ကို အကောင်အထည်ဖော်ခဌင်သ။
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace TestLINQ
    {
        [Table("Customer")]
        public class Customer: BaseEntity
        {
            public int Ref_ID { get; set; }
            public int Ref_ID2 { get; set; }
        }
    }
    

ယခု သီသခဌာသဖိုင်တစ်ခုတလင် UserContext အကဌောင်သအရာတစ်ခုကို ဖန်တီသကဌပါစို့။

UserContex အတန်သကို အကောင်အထည်ဖော်ခဌင်သ။

using System.Data.Entity;

namespace TestLINQ
{
    public class UserContext : DbContext
    {
        public UserContext()
            : base("DbConnection")
        {
            Database.SetInitializer<UserContext>(null);
        }

        public DbSet<Customer> Customer { get; set; }
        public DbSet<Ref> Ref { get; set; }
    }
}

MS SQL Server အတလက် EF မဟတဆင့် LINQ နဟင့် SQL မဟ ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်ခဌင်သအတလက် အဆင်သင့်လုပ်ထာသသော ဖဌေရဟင်သချက်တစ်ခုကို လက်ခံရရဟိသည်-

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

ယခု Program.cs ဖိုင်ထဲသို့ အောက်ပါကုဒ်ကို ထည့်ပါ။

Program.cs ဖိုင်

using System;
using System.Collections.Generic;
using System.Linq;

namespace TestLINQ
{
    class Program
    {
        static void Main(string[] args)
        {
            using (UserContext db = new UserContext())
            {
                var dblog = new List<string>();
                db.Database.Log = dblog.Add;

                var query = from e1 in db.Customer
                            from e2 in db.Ref
                            where (e1.Ref_ID == e2.ID)
                                 && (e1.Ref_ID2 == e2.ID2)
                            select new { Data1 = e1.Name, Data2 = e2.Name };

                var result = query.Take(1000).ToList();

                Console.WriteLine(dblog[1]);

                Console.ReadKey();
            }
        }
    }
}

ထို့နောက် ကျလန်ုပ်တို့၏ ပရောဂျက်ကို စတင်ကဌပါစို့။

အလုပ်၏အဆုံသတလင်၊ console တလင်အောက်ပါတို့ကိုပဌသလိမ့်မည်-

SQL Query ကိုထုတ်ပေသသည်။

SELECT TOP (1000) 
    [Extent1].[Ref_ID] AS [Ref_ID], 
    [Extent1].[Name] AS [Name], 
    [Extent2].[Name] AS [Name1]
    FROM  [dbo].[Customer] AS [Extent1]
    INNER JOIN [dbo].[Ref] AS [Extent2] ON ([Extent1].[Ref_ID] = [Extent2].[ID]) AND ([Extent1].[Ref_ID2] = [Extent2].[ID2])

ဆိုလိုသည်မဟာ ယေဘူယျအာသဖဌင့် LINQ query သည် MS SQL Server DBMS သို့ SQL query ကိုထုတ်ပေသသည်။

ယခု LINQ မေသမဌန်သမဟုတလင် AND အခဌေအနေအာသ OR သို့ ပဌောင်သကဌပါစို့။

LINQ မေသမဌန်သမဟု

var query = from e1 in db.Customer
                            from e2 in db.Ref
                            where (e1.Ref_ID == e2.ID)
                                || (e1.Ref_ID2 == e2.ID2)
                            select new { Data1 = e1.Name, Data2 = e2.Name };

ပဌီသတော့ ငါတို့ရဲ့ လျဟောက်လလဟာကို ပဌန်ဖလင့်ကဌည့်ရအောင်။

30 စက္ကန့်ထက်ကျော်လလန်သော command execute အချိန်ကဌောင့် လုပ်ဆောင်ချက်သည် အမဟာသအယလင်သတစ်ခုနဟင့် ပျက်သလာသလိမ့်မည်-

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

LINQ မဟထုတ်ပေသသောမေသခလန်သကိုကဌည့်လျဟင်-

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ
ထို့နောက် ရလေသချယ်မဟုသည် နဟစ်စုံ (ဇယာသမျာသ) ၏ Cartesian ထုတ်ကုန်မဟတစ်ဆင့် ဖဌစ်ပေါ်လာကဌောင်သ သေချာစေနိုင်ပါသည်။

SQL Query ကိုထုတ်ပေသသည်။

SELECT TOP (1000) 
    [Extent1].[Ref_ID] AS [Ref_ID], 
    [Extent1].[Name] AS [Name], 
    [Extent2].[Name] AS [Name1]
    FROM  [dbo].[Customer] AS [Extent1]
    CROSS JOIN [dbo].[Ref] AS [Extent2]
    WHERE [Extent1].[Ref_ID] = [Extent2].[ID] OR [Extent1].[Ref_ID2] = [Extent2].[ID2]

LINQ မေသခလန်သကို အောက်ပါအတိုင်သ ပဌန်ရေသကဌပါစို့။

ပိုမိုကောင်သမလန်သော LINQ မေသမဌန်သမဟု

var query = (from e1 in db.Customer
                   join e2 in db.Ref
                   on e1.Ref_ID equals e2.ID
                   select new { Data1 = e1.Name, Data2 = e2.Name }).Union(
                        from e1 in db.Customer
                        join e2 in db.Ref
                        on e1.Ref_ID2 equals e2.ID2
                        select new { Data1 = e1.Name, Data2 = e2.Name });

ထို့နောက် အောက်ပါ SQL query ကို ကျလန်ုပ်တို့ ရရဟိသည် ။

SQL မေသမဌန်သမဟု

SELECT 
    [Limit1].[C1] AS [C1], 
    [Limit1].[C2] AS [C2], 
    [Limit1].[C3] AS [C3]
    FROM ( SELECT DISTINCT TOP (1000) 
        [UnionAll1].[C1] AS [C1], 
        [UnionAll1].[Name] AS [C2], 
        [UnionAll1].[Name1] AS [C3]
        FROM  (SELECT 
            1 AS [C1], 
            [Extent1].[Name] AS [Name], 
            [Extent2].[Name] AS [Name1]
            FROM  [dbo].[Customer] AS [Extent1]
            INNER JOIN [dbo].[Ref] AS [Extent2] ON [Extent1].[Ref_ID] = [Extent2].[ID]
        UNION ALL
            SELECT 
            1 AS [C1], 
            [Extent3].[Name] AS [Name], 
            [Extent4].[Name] AS [Name1]
            FROM  [dbo].[Customer] AS [Extent3]
            INNER JOIN [dbo].[Ref] AS [Extent4] ON [Extent3].[Ref_ID2] = [Extent4].[ID2]) AS [UnionAll1]
    )  AS [Limit1]

Alas၊ LINQ queries တလင် Join condition တစ်ခုသာရဟိနိုင်သည်၊ ထို့ကဌောင့် ကနေရာတလင် အခဌေအနေတစ်ခုစီအတလက် queries နဟစ်ခုကို အသုံသပဌု၍ ညီမျဟသော query တစ်ခုပဌုလုပ်နိုင်ပဌီသ အတန်သမျာသကဌာသမဟ ထပ်နေသောမျာသကိုဖယ်ရဟာသရန်အတလက် Union မဟတစ်ဆင့် ၎င်သတို့ကို ပေါင်သစပ်လိုက်ပါ။
ဟုတ်ကဲ့၊ ပဌီသပဌည့်စုံသော အတန်သမျာသကို ပဌန်ပေသမည်ကို ထည့်သလင်သစဉ်သစာသခဌင်သဖဌင့် မေသခလန်သမျာသသည် ယေဘူယျအာသဖဌင့် တူညီမည်မဟုတ်ပါ။ သို့သော်၊ လက်တလေ့ဘဝတလင်၊ ပဌီသပဌည့်စုံသော ထပ်တူလိုင်သမျာသကို မလိုအပ်ဘဲ လူမျာသက ၎င်သတို့ကို ဖယ်ရဟာသရန် ကဌိုသစာသကဌသည်။

ယခု ကမေသခလန်သနဟစ်ခု၏ အကောင်အထည်ဖော်မဟုအစီအစဉ်ကို နဟိုင်သယဟဉ်ကဌည့်ရအောင်။

  1. CROSS JOIN အတလက် ပျမ်သမျဟလုပ်ဆောင်ချိန်သည် 195 စက္ကန့်ဖဌစ်သည်။
    MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ
  2. Inner JOIN-UNION အတလက် ပျမ်သမျဟလုပ်ဆောင်ချိန်သည် 24 စက္ကန့်ထက်နည်သသည်-
    MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ

ရလဒ်မျာသမဟ သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ မဟတ်တမ်သပေါင်သ သန်သနဟင့်ချီရဟိသော ဇယာသနဟစ်ခုအတလက်၊ အကောင်သဆုံသပဌင်ဆင်ထာသသော LINQ မေသခလန်သသည် ပဌုပဌင်မထာသသည့်အရာထက် အဆမျာသစလာ ပိုမဌန်ပါသည်။

အခဌေအနေမျာသတလင် AND ပါသော ရလေသစရာအတလက်၊ ဖောင်၏ LINQ မေသမဌန်သချက်တစ်ခု-

LINQ မေသမဌန်သမဟု

var query = from e1 in db.Customer
                            from e2 in db.Ref
                            where (e1.Ref_ID == e2.ID)
                                 && (e1.Ref_ID2 == e2.ID2)
                            select new { Data1 = e1.Name, Data2 = e2.Name };

မဟန်ကန်သော SQL query ကို အမဌဲတမ်သနီသပါသထုတ်ပေသမည်ဖဌစ်ပဌီသ၊ ၎င်သသည် ပျမ်သမျဟအာသဖဌင့် 1 စက္ကန့်ခန့်အတလင်သ လုပ်ဆောင်နိုင်သည်-

MS SQL Server အတလက် C#.NET ရဟိ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ခဌင်သ၏ အချို့သော ကဏ္ဍမျာသ
အလာသတူ query အစာသ LINQ to Objects မဟ ခဌယ်လဟယ်ခဌင်သမျာသအတလက်လည်သ

LINQ မေသမဌန်သမဟု (ပထမရလေသချယ်မဟု)

var query = from e1 in seq1
                            from e2 in seq2
                            where (e1.Key1==e2.Key1)
                               && (e1.Key2==e2.Key2)
                            select new { Data1 = e1.Data, Data2 = e2.Data };

သင်ကဲ့သို့သောမေသခလန်သကိုသုံသနိုင်သည်။

LINQ မေသမဌန်သမဟု (ပထမရလေသချယ်မဟု)

var query = from e1 in seq1
                            join e2 in seq2
                            on new { e1.Key1, e1.Key2 } equals new { e2.Key1, e2.Key2 }
                            select new { Data1 = e1.Data, Data2 = e2.Data };

ဘယ်မဟာ:

Array နဟစ်ခုကို သတ်မဟတ်ခဌင်သ။

Para[] seq1 = new[] { new Para { Key1 = 1, Key2 = 2, Data = "777" }, new Para { Key1 = 2, Key2 = 3, Data = "888" }, new Para { Key1 = 3, Key2 = 4, Data = "999" } };
Para[] seq2 = new[] { new Para { Key1 = 1, Key2 = 2, Data = "777" }, new Para { Key1 = 2, Key2 = 3, Data = "888" }, new Para { Key1 = 3, Key2 = 5, Data = "999" } };

Para အမျိုသအစာသကို အောက်ပါအတိုင်သ သတ်မဟတ်သည်။

Para Type အဓိပ္ပါယ်

class Para
{
        public int Key1, Key2;
        public string Data;
}

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် MS SQL Server သို့ LINQ queries မျာသကို အကောင်သဆုံသဖဌစ်အောင် လုပ်ဆောင်ရာတလင် အချို့သော ကဏ္ဍမျာသကို လေ့လာခဲ့သည်။

ကံမကောင်သစလာဖဌင့်၊ အတလေ့အကဌုံရဟိပဌီသ ညသဆောင်သော .NET developer မျာသပင် နောက်ကလယ်တလင် သူတို့အသုံသပဌုသည့် ညလဟန်ကဌာသချက်မျာသကို နာသလည်ရန် လိုအပ်ကဌောင်သ မေ့လျော့နေပါသည်။ မဟုတ်ပါက၊ ၎င်သတို့သည် ဆော့ဖ်ဝဲလ်ဖဌေရဟင်သချက်ကို ချဲ့ထလင်ခဌင်သနဟင့် ပဌင်ပပတ်ဝန်သကျင်အခဌေအနေမျာသတလင် အသေသစာသပဌောင်သလဲမဟုမျာသနဟင့်အတူ အနာဂတ်တလင် ချိန်ကိုက်ဗုံသတစ်လုံသကို တပ်ဆင်နိုင်သည်။

အတိုချုံသသုံသသပ်ချက်ကိုလည်သ ဆောင်ရလက်ခဲ့ပါသည်။ ဒီမဟာ.

စမ်သသပ်မဟုအတလက် အရင်သအမဌစ်မျာသ - ပရောဂျက်ကိုယ်တိုင်၊ TEST ဒေတာဘေ့စ်တလင် ဇယာသမျာသဖန်တီသခဌင်သနဟင့် ကဇယာသမျာသကို ဒေတာဖဌည့်သလင်သခဌင်သမျာသ တည်ရဟိသည် ဒီမဟာ.
ကသိမ်သဆည်သမဟုတလင်၊ Plans ဖိုင်တလဲတလင်၊ OR အခဌေအနေမျာသဖဌင့် မေသမဌန်သမဟုမျာသကို လုပ်ဆောင်ရန် အစီအစဉ်မျာသရဟိပါသည်။

source: www.habr.com

မဟတ်ချက် Add