2015-09-04 28 views
7

Navigasyon özelliklerini ilk kez bir araya getirme yerine kullanmaya çalışıyorum. Normalde sol dış birleşim ile çalışılacağı bir durum elde edemiyorum. Aşağıdaki örnekte, sadece yabancı anahtarın null olmadığı durumlarda sonuçlar alıyorum. Tüm sonuçlara geri ihtiyacım var. Neyi kaçırıyorum?EF Gezinme Boş değerli anahtar ile işaretleyiniz.

public class User 
{ 
    [Key] 
    public int UserID {get;set;} 

    public String Name {get;set;} 
} 

public class Shipment 
{ 
    [Key] 
    public int ShipmentID {get;set;} 

    public int? SignedForByID {get;set;} 

    [ForeignKey("SignedForByID")] 
    public virtual User SignedForBy{get;set;} 
} 

navigasyon özelliği haritalama:

Shipment.HasOptional(x=> x.SignedForBy).WithMany() 
.HasForeignKey(y=> y.SignedForByID).WillCascadeOnDelete(false); 

sorgusu:

var data = (from s in context.Set<Shipment>() 
      select new { 
        ShipmentID = s.ShipmentID, 
        SignedForBy = s.SignedForBy 
         }); 
+0

Bağlam değişkeni bir DbContext mi? Aradığınız 'Gönderiler' yönteminin uygulanmasını gösterebilir misiniz? – user2697817

+0

Evet, öyle. Bunu açıklığa kavuşturmak için yayını düzenlerim. Sadece bir DbSet – Sam

+0

Stumped o zaman, neden işe olmaması için bir neden göremiyorum. – user2697817

cevap

1

sorun bu örnekte gösterildiği değildi. Haritalamalar bir yardımcı sınıf tarafından oluşturulmaktadır. Bazı durumlarda, yardımcı sınıf, gezinme özelliklerini .HasOptional() yerine .HasRequired() yöntemiyle yanlış şekilde eşleştirmiştir. Eşleme sınıfının düzeltilmesi sorunu çözdü.