Bunun nedeni, EF4'ün model öncelikli olarak çalışma biçimidir.
Modeli ilk oluşturduğunuzda, SSDL'nin olmadığı bir durumdadır. Varlıkları sürükleyebilir, ilişkilendirebilir ve benzerlerini yapabilirsiniz ve yine de, EDMX dosyasındaki SSDL'ye bakarsanız, varlıkların hiçbirinin SSDL'de ilişkili bir depolama tablosu olmadığını göreceksiniz.
Bu, Generate Database From Model
bağlam menüsü öğesine tıkladığınızda değişir . Kafa karıştırıcı kısım, bu eylemin basitçe bir DDL komut dosyası oluşturmaktan daha fazlasını yapmasıdır. Aslında, EDMX dosyasını SSDL bilgilerini içerecek şekilde değiştirir. Bu noktadan itibaren, EDMX dosyası tasarımcı / CSDL'deki her varlığın SSDL'deki bir varlıkla eşleşmesi gereken bir duruma girecektir. Biri eşlenmezse, bir derleme zamanı hatasını tetikler:
Aşağıdaki EntitySet / AssociationSet için eşleme belirtilmedi - (EntityName)
Bir başka ilginç gerçek ise, derlemeyi engelleyecek türden bir hata olmamasıdır. Aslında, çıktı sınıfı kitaplığını oluşturacaktır. Bir uyarı falan olması gerekmez mi?
Bu hatayı önlemek için, yeni bir varlık ekledikten sonra yapmanız gereken tek şey Generate Database From Model
tekrar yapmaktır . Bu, SSDL'yi güncelleyecek ve eşlemeleri düzeltir.
DÜZENLE
Modeli önce kullanmıyorsanız ve "veri tabanından güncelleme yaparsanız", DB Sunucusundaki bir tabloyu sildiğinizde de bu hatayı alırsınız. Bunun nedeni, Entity Framework'ün varlığı sizin için otomatik olarak silmemesidir. Varlığı manuel olarak silin ve hata ortadan kalkar.