SORU
11 Mart 2013, PAZARTESİ


Varlık Çerçevesi 5 bir Kayıt Güncelleme

/ASP.NET MVC3 bir ortamda Varlık içinde bir rekor Çerçeve 5 güncelleme düzenleme farklı yöntemler keşfetmek olmuştur, ama şimdiye kadar hiçbiri ihtiyacım var tüm kutuları kene. Neden açıklayacağım.

Hangi artılarını ve eksilerini bahsedeceğim üç yöntem buldum:

Yöntem 1 - Orijinal kayıt, her bir özellik güncelleştirin

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    original.BusinessEntityId = updatedUser.BusinessEntityId;
    original.Email = updatedUser.Email;
    original.EmployeeId = updatedUser.EmployeeId;
    original.Forename = updatedUser.Forename;
    original.Surname = updatedUser.Surname;
    original.Telephone = updatedUser.Telephone;
    original.Title = updatedUser.Title;
    original.Fax = updatedUser.Fax;
    original.ASPNetUserId = updatedUser.ASPNetUserId;
    db.SaveChanges();
}    

Artıları

  • Özelliklerini değiştirmek belirleyebilir
  • Görüntüler her özellik içermesi gerek yok

İnş

  • 2 x veritabanı üzerinde orijinal sonra güncellemek için sorgular

Yöntem 2 - orijinal kayıt, set değerleri değişti

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    db.Entry(original).CurrentValues.SetValues(updatedUser);
    db.SaveChanges();
}

Artıları

  • Sadece modifiye özelliklerini veritabanına gönderilir

İnş

  • Görüntüler her özellik içermesi gerekir
  • 2 x veritabanı üzerinde orijinal sonra güncellemek için sorgular

Yöntem 3 - güncelleştirilmiş bir kayıt Eklemek ve devlet EntityState için ayarlayın.Değiştirilmiş

db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();

Artıları

  • 1 x veritabanı güncelleme için sorgu

İnş

  • Hangi özelliklerini belirtmek değiştiremez
  • Görüntüler her özellik içermelidir

Soru

Size sorum şu; gol bu elde edebileceğimi temiz bir yolu var mı?

  • Özelliklerini değiştirmek belirleyebilir
  • Görüntüler her özellik (şifre! gibi) içermesi gerek yok
  • 1 x veritabanı güncelleme için sorgu

Bu işaret için çok küçük bir şey olduğunu biliyorum ama bu çok basit bir çözümü Gözden kaçırmış olabilirim. Yöntem bir hakim olacak ;-)

CEVAP
11 Mart 2013, PAZARTESİ


Arıyoruz:

db.Users.Attach(updatedUser);
var entry = db.Entry(updatedUser);
entry.Property(e => e.Email).IsModified = true;
// other changed properties
db.SaveChanges();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011
  • TechShowsYou

    TechShowsYou

    3 Mart 2011