IDBService սերվիս
Բովանդակություն
- Ներածություն
- Մեթոդներ
- ActiveTrans
- AppLock
- BeginSqlServerDistributedTransaction
- BeginSqlServerDistributedTransactionAsync
- BeginTrans
- BeginTransAsync
- CommitTrans
- CommitTransAsync
- CreateAdditionalConnection
- CreateCommand
- CreateReadOnlyConnection
- GetApproximateServerDate
- GetServerDate
- RollBackTrans
- RollBackTransAsync
- SetIsolationLevel
- SetIsolationLevelAsync
- TryAppLock
- Հատկություններ
Ներածություն
IDBService դասը նախատեսված է տվյալների պահոցի հետ աշխատանքը ապահովելու համար։ Տալիս է SQL սերվերին միացում, բացում/փակում է տրանզակցիաներ։
Մեթոդներ
ActiveTrans
public bool ActiveTrans();
Ստուգում է ակտիվ տրանզակցիայի առկայությունը։
AppLock
public Task AppLock(string resource,
string errorMsg = "",
string mode = "Exclusive",
string owner = "Transaction",
int timeout = 0,
string dbPrincipal = "public");
Ստեղծում է SQL արգելափակում (lock) տրված անունով ռեսուրսի վրա։ Եթե արգելափակումը չի ստացվում ստեղծել, ապա առաջանում է սխալ։
Նախատեսված է զուգահեռ նույն ռեսուրսի հետ աշխատանքը սահմանափակելու համար։
Արգելափակման համար օգտագործվում է sp_getapplock պրոցեդուրան։
Պարամետրեր
resource
- Ռեսուրսի ներքին անունը (@Resource)։errorMsg
- Արգելափակման տեղադրման չստացվելու դեպքում առաջացող սխալի հաղորդագրությունը։ Եթե պարամետրի արժեքը դատարկ տող է, ապա առաջանում է ստանդարտ տեքստով սխալ։mode
- Արգելափակման տեղադրման եղանակը (@LockMode):owner
- Արգելափակման տեղադրման սեփականատերը (@LockOwner)։timeout
- Արգելափակման տեղադրման առավելագույն ժամանակը միլիվայրկյաններով (@LockTimeout)։dbPrincipal
- Տվյալների պահոցում իրավասություն ունեցող կողմ (@DbPrincipal):
BeginSqlServerDistributedTransaction
public void BeginSqlServerDistributedTransaction();
Բացում է բաշխված տրանզակցիա։
BeginSqlServerDistributedTransactionAsync
public Task BeginSqlServerDistributedTransactionAsync();
Բացում է բաշխված տրանզակցիա։
BeginTrans
public void BeginTrans();
Սկսում է SQL տրանզակցիա։
BeginTransAsync
public Task BeginTransAsync();
Սկսում է SQL տրանզակցիա։
CommitTrans
public void CommitTrans();
Ավարտում է SQL տրանզակցիան։
CommitTransAsync
public Task CommitTransAsync();
Ավարտում է SQL տրանզակցիան։
CreateAdditionalConnection
public SqlConnection CreateAdditionalConnection(bool pooling = true,
string connectionName = "",
bool isReadonly = false);
Բացում և վերադարձնում է նոր SQL միացում դեպի տվյալների պահոց։
Պարամետրեր
pooling
- Օգտագործել միացումների քեշ, թե ոչ։ Փոխանցում է SqlConnectionStringBuilder.Pooling հատկությանը։connectionName
- Ծրագրի անունը SQL միացում բացելուց։ Փոխանցում է SqlConnectionStringBuilder.ApplicationName հատկությանը։isReadonly
- Այո արժեքի դեպքում SQL միացումը բացվում է միայն կարդալու հնարավորությամբ։ Փոխանցում է ReadOnly արժեքը SqlConnectionStringBuilder.ApplicationIntent հատկությանը։
CreateCommand
public SqlCommand CreateCommand(TimeoutType timeoutType = TimeoutType.QueryTimeout);
Ստեղծում է SqlCommand, և անմիջապես լրացնում է CommandTimeout ըստ օգտագործողի դրույթներում սահմանված հացման առավելագույն ժամանակի։
Պարամետրեր
timeoutType
- SQL հարցման կատարման առավելագույն ժամանակի տիպը՝ սովորական հարցումների կամ հաշվետվությունների հարցման համար։
CreateReadOnlyConnection
public SqlConnection CreateReadOnlyConnection(bool pooling = true);
Ստեղծում է միայն կարդալու իրավասությամբ լրացուցիչ SQL միացում դեպի հիմնական տվյալների պահոց։
Պարամետրեր
pooling
- Օգտագործել միացումների քեշ, թե ոչ։
GetApproximateServerDate
public Task<DateTime> GetApproximateServerDate();
Վերադարձնում է SQL սերվիսի ընթացիկ ամսաթիվը/ժամը որոշակի շեղման հավանականությամբ։
Ավելի արագ է աշխատում քան GetServerDate, քանզի աշխատում է ամեն անգամ SQL չկատարելու սկզբունքով։
GetServerDate
public Task<DateTime> GetServerDate();
Վերադարձնում է SQL սերվիսի ընթացիկ ամսաթիվը/ժամը կանչելով SQL-ի GetDate ֆունկցիան։
RollBackTrans
public void RollBackTrans();
Հետարկում է SQL տրանզակցիան։
RollBackTransAsync
public Task RollBackTransAsync();
Հետարկում է SQL տրանզակցիան։
SetIsolationLevel
public void SetIsolationLevel(IsolationLevel level);
Փոխում է բաց տրազակցիայի մեկուսացման մակարդակը։
Տրանզակցիաների բացվում են Read Committed մակարդակով։
Պարամետրեր
level
- Տրանզակցիայի իզոլյացիայի մակարդակը։
SetIsolationLevelAsync
public Task SetIsolationLevelAsync(IsolationLevel level);
Փոխում է բաց տրազակցիայի մեկուսացման մակարդակը։
Տրանզակցիաների բացվում են Read Committed մակարդակով։
Պարամետրեր
level
- Տրանզակցիայի իզոլյացիայի մակարդակը։
TryAppLock
public Task<bool> TryAppLock(string resource,
string mode = "Exclusive",
string owner = "Transaction",
string dbPrincipal = "public");
Ստեղծում է SQL արգելափակում (lock) տրված անունով ռեսուրսի վրա և վերադարձնում է արժեք, որը ցույց է տալիս արդյոք արգելափակման տեղադրումը հաջողվել է, թե ոչ։
Նախատեսված է զուգահեռ նույն ռեսուրսի հետ աշխատանքը սահմանափակելու համար։
Արգելափակման համար օգտագործվում է sp_getapplock պրոցեդուրան։
Պարամետրեր
resource
- Ռեսուրսի ներքին անունը (@Resource)։mode
- Արգելափակման տեղադրման եղանակը (@LockMode):owner
- Արգելափակման տեղադրման սեփականատերը (@LockOwner)։dbPrincipal
- Տվյալների պահոցում իրավասություն ունեցող կողմ (@DbPrincipal):
Հատկություններ
AllowSnapshotIsolation
public bool AllowSnapshotIsolation { get; }
Ցույց է տալիս, արդյոք թույլատված է հիմնական տվյալների պահոցում Snapshot մեկուսացման մակարդակը, տվյալների աղբյուրի հարցումների կատարման համար։
Connection
public SqlConnection Connection { get; }
Վերադարձնում է բաց SQL միացումը դեպի տվյալների պահոց։
CurrentIsolationLevel
public IsolationLevel CurrentIsolationLevel { get; }
Վերադարձնում է տրանզակցիաների կատարման ընթացիկ մեկուսացման մակարդակը։
Database
string Database { get; }
Վերադարձնում է ընթացիկ տվյալների պահոցի անունը:
ReadOnly
public bool ReadOnly { get; }
Ցույց է տալիս, արդյոք բաց SQL միացումը միայն կարդալու իրավասությամբ է, թե ոչ։
Server
public string Server { get; }
Վերադարձնում է SQL սերվերի անունը:
TransDeferred
public bool TransDeferred { get; set; }
Վերադարձնում կամ նշանակում է Fact տիպի օբյեկտների տվյալների պահոցում հետաձգված գրանցման հայտանիշը։ Նախնական արժեքը true է։
true արժեքի դեպքում DocumentService.StoreFact մեթոդի կանչի արդյունքում հաշվառումները պահվում են փաստաթղթի StoredFacts ցուցակում և գրանցվում տվյալների պահոցում փաստաթղթի գրանցման հետ միասին։ false արժեքրի դեպքում՝ գրանցվում են անմիջապես։