۱۳۸۸ فروردین ۷, جمعه

آپدیت با استفاده از TimeStamp

یکی از راههای جلوگیری از concurrency استفاده از مقایسه تمامی فیلدها در قسمت Where است . یعنی اینکه تمام فیلدهای جدول رو در قسمت Where قرار دهیم تا اینجوری اگر کسی از جای دیگه آپدیت کرده بود به مشکل برنخوریم.
یکی دیگه از راههای این کار استفاده از یک فیلد TimeStamp در جدول است. وقتی که یه سطر از جدول به روز رسانی میشود و یا اضافه میشود SQL Server بطور اتوماتیک این فیلد را تغییر میدهد. خوب ما میتوانیم از این کار برای جلوگیری از همزمانی استفاده کنیم:
برای این کار یک پارامتر از نوع Parameter تعریف کنید که از نوع باینری باشد(داده Timestamp مقادیر باینری را در خود نگه میدارد) باشه:


daUpdateCommand.Parameters.Add(new SqlParameter("@pTimeStamp", SqlDbType.Binary));


daUpdateCommand.Parameters["@pTimeStamp"].SourceVersion = DataRowVersion.Original;


daUpdateCommand.Parameters["@pTimeStamp"].SourceColumn = "TimeStampCol";



SourceVersion: در SqlDataAdapter.UpdateCommand استفاده میشود و مشخص میکند طی بروز رسانی از مقدار فعلی پارامتر استفاده شود یا از مقدار اصلی و اولیه.
DataRowVersion: نسخه DataRow را مشخص میکند. DataRowVersion یک مجموعه است که 4 مقدار Original ، Current ، Proposed و Default را در خود دارد. در کد بالا به دلیل اینکه میخواهیم از مقدار اصلی موجود در جدول استفاده کنیم از Original استفاده میکنیم
SourceColumn : هم ستونی را که باید این پارامتر از آن مقدار بگیرد را مشخص میکند.

هیچ نظری موجود نیست:

ارسال یک نظر