public class Order
{
public int Id {get;set;}
[DisplayName("User")]
public long UserId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
public decimal Amount { get; set; }
}
IEnumurable
आईसीलेक्शन के बजाय एक आईनेमरेबल का पर्दाफाश कब करें?
public class User
{
public int Id{get;set;}
public virtual IEnumerable<Order> Orders { get; set; }
}
public User GetWithOrders()
{
var myUser=UserRepository.GetByEmail("[email protected]");
myUser.Orders=OrderRepository.GetByUserId(myUser.Id);
return myUser;
}
साथ
ICollection
public class User
{
public int Id{get;set;}
public virtual ICollection<Order> Orders { get; set; }
}
public User GetWithOrders()
{
var myUser=UserRepository.GetByEmail("[email protected]");
return myUser;
}
के साथ मैं आलसी लोड हो रहा है एक नेविगेशन संपत्ति के लिए IEnumerable
का उपयोग कर की जरूरत नहीं है। इसलिए, मुझे इस उपयोगकर्ता के लिए एक और क्वेरी के साथ ऑर्डर प्राप्त करना होगा।
मेरे पास ICollection
के साथ नेविगेशन है। तो मैं उपयोगकर्ता से आदेश तक पहुंच सकता हूं। यह अच्छा लगता है। लेकिन फिर मैं सेवा या भंडार का उपयोग किए बिना नियंत्रक में उपयोगकर्ता को नए ऑर्डर जोड़ सकता हूं।
यह नियंत्रक स्तर पर डेटा को जोड़ना है। क्या यह विरोधी पैटर्न है?
सबसे पहले, मैंने भी विचार-विमर्श किया। लेकिन मुझे यकीन नहीं था कि इससे अधिक जटिलता आ सकती है या नहीं। अगर मुझे करना है तो मैं व्यूमोडेल का उपयोग करूंगा। धन्यवाद। –
बिंदु वास्तव में दृश्यमान नहीं है। यह बीएलएल या डोमेन मॉडल है। एक ऑब्जेक्ट जो आपके उपयोग के मामले का प्रतिनिधित्व करता है (एक उपयोगकर्ता जो ऑर्डर कर सकता है)। इसका प्रयोग करें यदि आप अपने डेटा मॉडल का खुलासा नहीं करना चाहते हैं। – CodeCaster
आप '_orders.AsNumerable(); ''' _orders' क्यों लौट रहे हैं ''' '' '' '_numerable'? –