2009-11-19 13 views
44

VS 2010 beta 2'yi kullanarak, ASP.NET MVC.Varlık Framework One-To-One Eşleme Sorunları

Bir Entity çerçeve dosyası oluşturmaya çalıştım ve verileri veritabanımdan aldım.

Orada ilişkilerle bazı sorunlar vardı, bu yüzden etrafında şeyleri çimdik başladı ama

Hata 1 Hata 113 basit bire-bir ilişkiler için aşağıdaki hatayı almaya devam etti: Çokluk geçerli değil Rol 'UserProfile' ilişkisinde 'FK_UserProfiles_Users'. Bağımlı Rol özellikleri temel özellikler olmadığından Bağımlı Rolün çokluğunun üst sınırının * olması gerekir. myEntities.edmx 2024

Benim Kullanıcılar tablodur diğer tablolara diğer bazı çok-çok ilişkileri oluşur, ancak diğer tablolarla bire-bir ilişki kurmaya çalışırken, o hata açılır.

Kullanıcılar Tablo

  • KullanıcıKimliği
  • Adı
  • Eposta vb

..

UserProfiles Tablo

  • UserProfileID
  • KullanıcıKimliği (Kullanıcılar Tablo için FK)
  • Yer bire-bir ilişkiler için
  • Doğum

cevap

65

, EF tabloları aynı birincil anahtar kullandığınızı beklemektedir. Ve gerçekten, eğer gerçek bire bir ise, muhtemelen olmalıdır. Örneğinizde, UserPro'yu UserProfiles tablosunda birincil anahtar yaparsanız, bire bir çalışacaktır.

+12

Bu sorunu, bir ana tabloyla bir uzantı tablosu arasında 0..1 ile 1 arasındaki bir ilişkiyi kurmaya çalışırken anladım. Bir çok başka ilişki olarak genişletilebildiğim için PK'nin bunlarla karıştırmak istemiyorum. Bu tür bir durumun nasıl çözüleceği hakkında herhangi bir fikrin var mı? – Andreas

+1

Junior: Bu bir yabancı anahtar ilişkisidir ve ilişkiyi seçerek, özelliklere girerek ve "End1 Multiplicity" ve "End2 Multiplicity" ayarlarını değiştirerek oraya ulaşabilirsiniz (bunun VS 2010-only olmasına rağmen). Büyük olasılıkla "End2 Multiplicity" değerini "0..1" olarak ayarlayacaksınız. –

+0

EF, normal RA çokluklarını doğru şekilde işleyemese ve bu nedenle değiştirilecek mükemmel bir RA tasarımını zorlasa bile * "should" * yoktur. Bu, * modelin değiştirilmesinin, mevcut durumun bir kenara atılmasının * gerekmediği anlamına geliyor - bu da, RA veritabanı alanını doğru bir şekilde modellemek için, EF'nin hala bugün olduğu gibi, * sabit * olması gerektiği anlamına geliyor. – user2864740

10

Benzer bir sorun var, ancak bir satış ve layby senaryosu var.

Satış olmadan bir satış mevcut olabilir ve bir satış yatırımı olmadan satış olabilir. Bu, 0 veya 1 - 0 veya 1 ilişkisine sahip olduğum anlamına gelir.

Layby referansları satışı, ancak layby, Satış'ın birincil anahtarını kullanamaz ve Satış, Layby'nin birincil anahtarını kullanamaz.

Ben bir 0 veya 1 birçok için ilişki kullanarak sorunu çözdü özel olarak satışa 'Laybys' alıcı ve ayarlayıcı yapılandırılmış ve sonra benim POCO benim kendi 'layby' alıcı ve ayarlayıcı sağlanan .

+3

Merak ediyorum, bu tür ilişkileri yakalamak için daha iyi bir yol buldunuz mu? – Hannele