0
對於併發控制我在我的Context類中編寫「VersionCheck」函數,我需要動態加載Context對象並檢查版本是否與當前上下文對象RowVersion相同。現在我使用switch語句。 (代碼如下) 還有,是否有更方便的版本控制方式?實體框架使用「時間戳」值檢查的併發控制
p.s. RowVersion是數據庫中的TimeStamp類型。
public class SchoolContext : DbContext
{
public DbSet<Group> Groups { get; set; }
public DbSet<Person> Persons { get; set; }
public bool VersionCheck(string objName)
{
var dbc = new SchoolContext();
byte[] bt1 = null;
byte[] bt2 = null;
switch (objName)
{
case "Person":
dbc.Persons.Load();
bt1 = dbc.Persons.SingleOrDefault(p => p.Id == 1).RowVersion;
bt2 = this.Persons.Local.SingleOrDefault(p => p.Id == 1).RowVersion;
break;
case "Group":
dbc.Groups.Load();
bt1 = dbc.Groups.SingleOrDefault(p => p.Id == 1).RowVersion;
bt2 = this.Groups.Local.SingleOrDefault(p => p.Id == 1).RowVersion;
break;
}
if (bt1 == null && bt2 == null)
{
throw new Exception("One of the Variable is null!");
return true;
}
for (int i = 0; i < bt1.Length; i++)
{
if (bt1[i] != bt2[i])
{
MessageBox.Show("Current object changed!");
return false;
}
}
return true;
}
}
你看過嗎? http://stackoverflow.com/a/6554939/5984 – idursun
你想達到什麼目的?爲什麼你有2個獨立的數據庫上下文?您是否使用ConcurrencyCheckAttribute作爲時間戳,或者這是一種自定義解決方案?如果是的話,你的目標又是什麼? –
對不起,這是我的錯誤。我編輯了代碼。只有SchoolContext。 – sdkarm