2012-07-16 12 views
6

के साथ काम नहीं करना शामिल है मुझे यकीन नहीं है कि क्या बदल गया है, लेकिन, किसी एप्लिकेशन पर वापस आने के बाद मैं कुछ हफ्ते पहले काम कर रहा था, मेरे .Include() कॉल अब मेरे संबंधित तालिकाओं में से किसी एक के लिए काम नहीं कर रहा है। अजीब हिस्सा यह है कि यह एक अलग टेबल के लिए काम करता है।एंटिटी फ्रेमवर्क क्वेरी

//Get the order and nothing else. 
using (OrderEntity orderContext = new OrderEntity(OrdersConnectionString)) { 
    var query = from order in orderContext.ShippingOrders 
       where order.ShipperId == shippingId 
       select order; 

    //I got a value! 
    shippingOrder = query.ToList().FirstOrDefault(); 
} 

//Get the line item and nothing else. 
using (OrderEntity orderContext = new OrderEntity(OrdersConnectionString)) { 
    var query = from orderItem in orderContext.ShippingOrderItems 
       where orderItem.ShipperId == shippingId 
       select orderItem; 

    //I got a value! 
    shippingOrderItems = query.ToList(); 
} 

यहाँ है जहाँ मैं उलझन में हूँ है::

//Get the order *AND* the line item 
using (OrderEntity orderContext = new OrderEntity(OrdersConnectionString)) { 
    var query = from order in orderContext.ShippingOrders.Include("ShippingOrderItems") 
       where order.ShipperId == shippingId 
       select order; 

    //I get a ShippingOrder result, but no items are returned. I used the SQL Server Profiler and saw the SQL that got executed; it contains the item, EF just isn't loading the object. 
    shippingOrder = query.ToList().FirstOrDefault(); 
} 

मैं एक अलग संबंधित तालिका के लिए परिणाम वापस पाने के लिए कर रहा हूँ यहाँ टिप्पणी दिखा क्या मेरी परिणाम हैं के साथ कुछ कोड है। इससे मुझे लगता है कि ईएफ में मेरे ऑर्डर और लाइन आइटम टेबल के बीच संबंध गुम है, लेकिन, मुझे यकीन नहीं है कि मैं इसे कैसे ठीक कर सकता हूं।

संपादित: यहाँ आदेश इकाई

/// <summary> 
/// No Metadata Documentation available. 
/// </summary> 
[EdmEntityTypeAttribute(NamespaceName="OrderModel", Name="ShippingOrder")] 
[Serializable()] 
[DataContractAttribute(IsReference=true)] 
public partial class ShippingOrder : EntityObject 
{ 
    #region Factory Method 

    /// <summary> 
    /// Create a new ShippingOrder object. 
    /// </summary> 
    /// <param name="shipperId">Initial value of the ShipperId property.</param> 
    public static ShippingOrder CreateShippingOrder(global::System.String shipperId) 
    { 
     ShippingOrder shippingOrder = new ShippingOrder(); 
     shippingOrder.ShipperId = shipperId; 
     return shippingOrder; 
    } 

    #endregion 
    #region Primitive Properties 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] 
    [DataMemberAttribute()] 
    public global::System.String ShipperId 
    { 
     get 
     { 
      return _ShipperId; 
     } 
     set 
     { 
      if (_ShipperId != value) 
      { 
       OnShipperIdChanging(value); 
       ReportPropertyChanging("ShipperId"); 
       _ShipperId = StructuralObject.SetValidValue(value, false); 
       ReportPropertyChanged("ShipperId"); 
       OnShipperIdChanged(); 
      } 
     } 
    } 
    private global::System.String _ShipperId; 
    partial void OnShipperIdChanging(global::System.String value); 
    partial void OnShipperIdChanged(); 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String OrderNumber 
    { 
     get 
     { 
      return _OrderNumber; 
     } 
     set 
     { 
      OnOrderNumberChanging(value); 
      ReportPropertyChanging("OrderNumber"); 
      _OrderNumber = StructuralObject.SetValidValue(value, true); 
      ReportPropertyChanged("OrderNumber"); 
      OnOrderNumberChanged(); 
     } 
    } 
    private global::System.String _OrderNumber; 
    partial void OnOrderNumberChanging(global::System.String value); 
    partial void OnOrderNumberChanged(); 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public Nullable<global::System.DateTime> OrderDate 
    { 
     get 
     { 
      return _OrderDate; 
     } 
     set 
     { 
      OnOrderDateChanging(value); 
      ReportPropertyChanging("OrderDate"); 
      _OrderDate = StructuralObject.SetValidValue(value); 
      ReportPropertyChanged("OrderDate"); 
      OnOrderDateChanged(); 
     } 
    } 
    private Nullable<global::System.DateTime> _OrderDate; 
    partial void OnOrderDateChanging(Nullable<global::System.DateTime> value); 
    partial void OnOrderDateChanged(); 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String CustomsComment 
    { 
     get 
     { 
      return _CustomsComment; 
     } 
     set 
     { 
      OnCustomsCommentChanging(value); 
      ReportPropertyChanging("CustomsComment"); 
      _CustomsComment = StructuralObject.SetValidValue(value, true); 
      ReportPropertyChanged("CustomsComment"); 
      OnCustomsCommentChanged(); 
     } 
    } 
    private global::System.String _CustomsComment; 
    partial void OnCustomsCommentChanging(global::System.String value); 
    partial void OnCustomsCommentChanged(); 

    #endregion 

    #region Navigation Properties 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [XmlIgnoreAttribute()] 
    [SoapIgnoreAttribute()] 
    [DataMemberAttribute()] 
    [EdmRelationshipNavigationPropertyAttribute("OrderModel", "FK_ShippingOrderItem_ShippingOrder", "ShippingOrderItem")] 
    public EntityCollection<ShippingOrderItem> ShippingOrderItems 
    { 
     get 
     { 
      return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<ShippingOrderItem>("OrderModel.FK_ShippingOrderItem_ShippingOrder", "ShippingOrderItem"); 
     } 
     set 
     { 
      if ((value != null)) 
      { 
       ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<ShippingOrderItem>("OrderModel.FK_ShippingOrderItem_ShippingOrder", "ShippingOrderItem", value); 
      } 
     } 
    } 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [XmlIgnoreAttribute()] 
    [SoapIgnoreAttribute()] 
    [DataMemberAttribute()] 
    [EdmRelationshipNavigationPropertyAttribute("OrderModel", "FK_ShippingOrderItemTracking_ShippingOrder", "ShippingOrderTracking")] 
    public EntityCollection<ShippingOrderTracking> ShippingOrderTrackings 
    { 
     get 
     { 
      return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<ShippingOrderTracking>("OrderModel.FK_ShippingOrderItemTracking_ShippingOrder", "ShippingOrderTracking"); 
     } 
     set 
     { 
      if ((value != null)) 
      { 
       ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<ShippingOrderTracking>("OrderModel.FK_ShippingOrderItemTracking_ShippingOrder", "ShippingOrderTracking", value); 
      } 
     } 
    } 

    #endregion 
} 
+0

लंबे शॉट ... क्या आपको अपने शिपिंग ऑर्डर इटम्स क्लास पर खाली कन्स्ट्रक्टर मिला है? – Phil

+0

क्या आप शिपिंग ऑर्डर इकाई पोस्ट कर सकते हैं? ShippingOrderItem की संपत्ति (और कॉन्फ़िगरेशन) का नाम क्या है? –

+0

@ फिल कैर्टमेल - बस एक एफवाईआई: मैं ऑटो-जेनरेट कोड (डेटाबेस-प्रथम) का उपयोग कर रहा हूं। मैंने कक्षा को देखा और कोई कन्स्ट्रक्टर निर्दिष्ट नहीं है, इसलिए, सी # जादू मुझे एक खाली कन्स्ट्रक्टर के साथ छोड़ रहा है। –

उत्तर

1

मैं अभी भी यकीन है कि क्या इस समस्या का कारण था नहीं कर रहा हूँ है। मैंने बस अपना डेटाबेस छोड़ने और मेरी टेबल (प्राथमिक और विदेशी कुंजी के साथ) को फिर से बनाने का निर्णय लिया और फिर से सभी डेटा पर माइग्रेट कर दिया। यह वास्तव में इसे ठीक करता है, लेकिन, मुझे यकीन नहीं है कि क्या अलग हो रहा है। मुझे कोई अपवाद लॉग नहीं मिला था और SQL सर्वर प्रोफाइलर के आधार पर ऐसा लगता था कि सही क्वेरी निष्पादित की जा रही थी।

+0

किसी भी कारण से आपने इस उत्तर को स्वीकार नहीं किया है? –

+0

@ShadowWizard - मुझे वापस आना और इसे उत्तर के रूप में स्वीकार करना था। धन्यवाद। –

+0

लॉल .. खैर, देर आए दुरुस्त आए! :) –

1

आप भी इस कोशिश कर सकते हैं:

if (Order.shippingId != null && Order.shippingId > 0) 
    orderContext.LoadProperty(Orders, Order => Order.ShippingOrderItems); 

यह ShippingOrderItems में मिलान आदेश आईडी लायेगा।

संबंधित मुद्दे