EF: Doğrulama tembel yüklü, gerekli özellikleri kullanırken güncelleme başarısız
Bu son derece kolay bir model verilir
public class MyContext : BaseContext
{
public DbSet<Foo> Foos { get; set; }
public DbSet<Bar> Bars { get; set; }
}
public class Foo
{
public int Id { get; set; }
public int Data { get; set; }
[Required]
public virtual Bar Bar { get; set; }
}
public class Bar
{
public int Id { get; set; }
}
Aşağıdaki program başarısız:
object id;
using (var context = new MyContext())
{
var foo = new Foo { Bar = new Bar() };
context.Foos.Add(foo);
context.SaveChanges();
id = foo.Id;
}
using (var context = new MyContext())
{
var foo = context.Foos.Find(id);
foo.Data = 2;
context.SaveChanges(); //Crash here
}
DbEntityValidationException
ile. Mesajı EntityValidationErrors
bulunurBar alanı gereklidir..
Eğer SaveChanges
önce aşağıdaki satırı ekleyerek Bar
mal yükleme zorluyorum ancak:
var bar = foo.Bar;
Her şey gayet iyi çalışıyor. Bu da Ben [Required]
özniteliğini kaldırmak çalışır.
Bu gerçekten beklenen bir davranış mı? Orada herhangi bir geçici çözüm (her gerekli başvuru her zaman yükleme dışında bir varlık güncellemek istiyorum)
CEVAP
Aynı sorunun bir cevabı vardı following post buldum:
Bu sorunun nedeni bu. RC ve RTM doğrulama artık tembel yükler herhangi bir özellikleri. Nedeni bu değişiklik kaydederken olmasıdır yapıldı bu kez de varlıkları bir sürü tembel yüklenen özellikleri doğrulama onları bir potansiyel birer alacağı beklenmedik bir sürü neden hareketleri ve sarsılan performans.
Çözüm açıkça yüklenemedi. kaydetmeden önce tüm doğrulanmış özellikleri veya kullanarak doğrulama .() Vardır, burada nasıl yapılacağı hakkında daha fazla bilgi edinin: http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx
Benim çok berbat bir proxy uygulamasıdır bu. Süre unnecesarily yürüyen nesne grafiği ve retriveing tembel yüklenen özellikler doğal olarak bir şey olmaya bilir (ama görünüşe göre göz ardı Microsoft'un ilk enkarnasyon EF), yapmamalısın olması lazım BM-proxy sarıcı için doğrulamak var. Kararımı değiştirdim, ORM değişikliği izci doğrulama gerektirir bilir doğrusu neyse nesne grafiği yürümek, gitmek gerekir neden emin değilim.
Sorun var neden emin değilim, ama eğer ki Arabiriminin kullanarak olsaydım bu sorunu yaşıyor olmazdım eminim.
Benim 'çözüm' - Ne yaptım EntityTypeConfiguration bir sınıfta ilişkinin Gerekli doğasını tanımlamak, ve Gerekli özniteliği kaldırılır. Bu iyi çalışması gerekir. İlişkiyi doğrulamak değil, ama güncelleme başarısız anlamına gelir. Değil ideal bir sonuç.
Nuget Paket Update't yüklü paket ...
Android Studio't başlayacak, başa...
Güncelleme başarısız Homebrew:; Lütfen...
Kullanarak veya rubygems için toplayıc...
SSL_connect geri=1=0=SSLv3 okumak sunu...