2016-04-04 35 views
0

MVC 5.2, EF 6.1.3 ve SQL Server 2008 R2 ile kod ilk kullanıyorum.EF, bir yabancı anahtarı eşleyemiyor

İki tablo vardır: Öğe ve Ekran. Öğe, Display.DisplayID'ye yabancı bir anahtarla PreOrderDisplayID adlı bir sütuna sahiptir. EF katmanında

, ben var: Ben EF üzerinden bu tabloyu sorgulamak çalıştığınızda

class Item 
    public int? PreOrderDisplayID { get; set; } 
    public virtual Display PreOrderDisplay { get; set; } 
... 
class Display 
    public int DisplayID { get; set; } 
    public virtual ICollection<Item> PreOrderItems { get; set; } 
... 
class OrdersContext : DbContext 
protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Display>() 
       .HasMany(e => e.PreOrderItems) 
       .WithOptional(e => e.PreOrderDisplay) 
       .HasForeignKey(e => e.PreOrderDisplayID); 
}  
... 

, alıyorum:

Geçersiz sütun adı 'Display_DisplayID'.

ve ben kapakların altında, EF varolmayan bir sütun ile SQL getirici olduğunu görebilirsiniz:

INNER JOIN [dbo].[Item] AS [Extent2] ON [Extent1].[ItemID] = [Extent2].[ItemID] 
... 
LEFT OUTER JOIN [dbo].[Display] AS [Extent5] ON [Extent2].[Display_DisplayID] = [Extent5].[DisplayID] 

yanlış yapıyorum? Teşekkür ederim.

+0

gösteri tam sınıf tanımlarını bunların yanı sıra tüm FLUENT konfigürasyonları – Moho

cevap

0

Sorun, PreOrderDisplay ve PreOrderDisplayID öğesini Öğeye eklemeden önce, Item öğesi ve Item.DisplayID özellikleri aracılığıyla Görüntülenecek Öğede başka bir ilişki zaten vardı. Yani ilişki öncesi HasForeignKey koşulu olmadan sorunsuz çalışıyordu, ancak yeni bir ilişki eklendi gelince de orijinal ilişkisi gidip HasForeignKey madde eklemek zorunda: Item` ve `Display` için

modelBuilder.Entity<Display>() 
      .HasMany(e => e.Items) 
      .WithOptional(e => e.Display) 
      .HasForeignKey(e => e.DisplayID); 
İlgili konular