RefreshMode Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yöntemin Refresh iyimser eşzamanlılık çakışmalarını nasıl işlediğini tanımlar.
public enum class RefreshMode
public enum RefreshMode
type RefreshMode =
Public Enum RefreshMode
- Devralma
Alanlar
KeepChanges | 1 | Refresh yöntemi değiştirilmiş geçerli değeri tutmaya zorlar, ancak diğer değerleri veritabanı değerleriyle güncelleştirir. |
KeepCurrentValues | 0 | Refresh yöntemini özgün değeri veritabanından alınan değerlerle değiştirmeye zorlar. Geçerli değer değiştirilmez. |
OverwriteCurrentValues | 2 | Refresh yöntemini veritabanındaki değerlerle tüm geçerli değerleri geçersiz kılmaya zorlar. |
Örnekler
Aşağıdaki örnek, veritabanındaki değerlerle geçerli değerlerin üzerine yazar.
Northwnd db = new Northwnd("...");
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
Console.WriteLine(e.Message);
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
// All database values overwrite current values.
occ.Resolve(RefreshMode.OverwriteCurrentValues);
}
}
Dim db As New Northwnd("...")
Try
db.SubmitChanges(ConflictMode.ContinueOnConflict)
Catch ex As ChangeConflictException
Console.WriteLine(ex.Message)
For Each occ As ObjectChangeConflict In db.ChangeConflicts
' All database values overwrite current values.
occ.Resolve(Data.Linq.RefreshMode.OverwriteCurrentValues)
Next
End Try
Aşağıdaki örnekte, özgün değeri veritabanından alınan değerlerle değiştirme işlemi gösterilmektedir. Geçerli değer değiştirilmez.
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
Console.WriteLine(e.Message);
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
//No database values are merged into current.
occ.Resolve(RefreshMode.KeepCurrentValues);
}
}
Try
db.SubmitChanges(ConflictMode.ContinueOnConflict)
Catch ex As ChangeConflictException
Console.WriteLine(ex.Message)
For Each occ As ObjectChangeConflict In db.ChangeConflicts
' No database values are merged into current.
occ.Resolve(Data.Linq.RefreshMode.KeepCurrentValues)
Next
End Try
Aşağıdaki örnek değiştirilmiş geçerli değerleri tutar, ancak diğer değerleri veritabanı değerleriyle güncelleştirir.
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
Console.WriteLine(e.Message);
// Automerge database values for members that client
// has not modified.
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
occ.Resolve(RefreshMode.KeepChanges);
}
}
// Submit succeeds on second try.
db.SubmitChanges(ConflictMode.FailOnFirstConflict);
Try
db.SubmitChanges(ConflictMode.ContinueOnConflict)
Catch ex As ChangeConflictException
Console.WriteLine(ex.Message)
For Each occ As ObjectChangeConflict In db.ChangeConflicts
' Automerge database values into current for members
' that client has not modified.
occ.Resolve(Data.Linq.RefreshMode.KeepChanges)
Next
End Try
' Submit succeeds on second try.
db.SubmitChanges(ConflictMode.FailOnFirstConflict)
Açıklamalar
Bu numaralandırma tüm Refresh aşırı yüklemeler için geçerlidir.