2011-09-25 20 views
6

enter image description hereVarlık çerçevesi varolmayan sütunu almaya çalışıyor

VideoCollection öğelerini veritabanından almaya çalışıyorum ama {"Invalid column name 'User_Id'."} aldığımda - bir kesme noktası belirlediğimde EF'nin User_Id sütununu seçmeye çalıştığını ancak Cs nesnesinde bulunmadığını görebiliyorum veya veritabanı şeması. (Başka bir masada var ama önemli olmamalı). Bunun neden olduğunu öğrenmek için bir yer var mı?

cevap

9

VideoCollection referansı olan bir Kullanıcı sınıfınız var mı? Eğer öyleyse, muhtemelen ikisi arasındaki ilişkiyi açıkça tanımlamanız gerekir. Görüldüğü gibi, EF, VideoCollection öğesinin ilişkiyi tanımlayan bir yabancı anahtar, User_Id içermesi gerektiği sonucuna varıyor.

+0

Neredeyse bittin - Bir adet alıcım olan PurchasedCollections - UserId ve VideoCollectionId (her ikisi de yabancı anahtar olarak). Bu ilişkiyi açıkça tanımlamalı mı? Bu aracıyı Cs nesnelerinden ve DbContext'ten (asla doğrudan ona erişmem gerekmediğinden) çıkardım. Bu sorun neden olabilir mi? – greenimpala

+2

@ st3, tabloyu User_VideoCollections olarak yeniden adlandırmanız veya 'OnModelCreating'i geçersiz kılmanız ve 'PurchasedCollections' tablosunu kullanarak bağlantıyı açıkça kurmanız gerekir. EF (ilk kod) kuralları, doğrudan FK ilişkisi veya varlıkların isimlerini kullanarak bir birleştirme tablosunun olmasını bekler. Bundan ayrılırsanız, bağlantının nasıl yapıldığını anlatmanız gerekir. Builder.Entity () .HasMany (u => u.Collections) .WithRequired() ToTable ("PurchasedCollections"); – tvanfosson

+0

gibi bir şey işe yaramış gibi görünüyor. Bu isimlendirme sözleşmesiyle (ilişkiyi açıkça tanımladığınız sürece) çok fazla ilişkinin bildirilmesi gerektiğini mi söylüyorsunuz? – greenimpala