कैलिबर्न के साथ। मिक्रो मैं व्यूमोडेल की एक संपत्ति के रूप में एक ईएफ 4 इकाई को उजागर करने के पेशेवरों और विपक्ष को जानना चाहता हूं (एक तकनीक hereand here पर चर्चा की गई)। यह मुझे हर क्षेत्र के लिए गेटर्स और सेटर्स लिखने से बचने की अनुमति देता है (नीचे OneCustomer देखें)। दोष मुझे XAML में सभी बाध्यकारी बयान लिखने की आवश्यकता है (नीचे अंतिम नाम ViewModel में नहीं है लेकिन XAML बाध्यकारी की आवश्यकता है)। यदि मैं प्रत्येक व्यू (नीचे दिए गए फर्स्टनाम के रूप में) के साथ मेरे व्यूमोडेल को भरने की निर्धारित तकनीक से चिपक जाता हूं तो मुझे अंततः अतिरिक्त कोड का एक टन लिखना होगा, इसलिए NotifyOfProperyChange को कॉल किया जाएगा। आवेदन काफी बड़ा होगा। क्या मुझे प्रत्येक इकाई को ViewModel की संपत्ति के रूप में बेनकाब करना चाहिए?कैलिबर के साथ बाध्यकारी ईएफ 4। माइक्रो: क्या मुझे अपनी इकाई को व्यूमोडेल की संपत्ति के रूप में उजागर करना चाहिए?
मेरे ViewModel में:
private MyEntities _context = new MyEntities();
private BindableCollection<Customer> _custBindableCollection;
private Customer _oneCustomer;
private string _firstName;
public void Load()
{
_custBindableCollection = new BindableCollection<Customer>(_context.Customers.Where(row => row.CustomerType == "FOO"));
AllCustomers = _custBindableCollection;
_oneCustomer = _custBindableCollection.FirstOrDefault();
FirstName = _oneCustomer.FirstName;
OneCustomer = _oneCustomer;
}
public BindableCollection<Customer> AllCustomers
{
get { return _custBindableCollection;}
set {_custBindableCollection = value;
NotifyOfPropertyChange(() => AllCustomers);}
}
public Customer OneCustomer
{
get { return _oneCustomer;}
set { _oneCustomer = value;
NotifyOfPropertyChange(() => OneCustomer);}
}
public string FirstName
{
get { return _firstName; }
set {
_firstName = value;
_oneCustomer.FirstName = value;
NotifyOfPropertyChange(() => FirstName);
NotifyOfPropertyChange(() => CanSaveChanges);
}
}
public void SaveChanges()
{ _context.SaveChanges(); }
public bool CanSaveChanges { get { return IsValid; } }
मेरे विचार में:
<StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="First Name:" />
<TextBox x:Name="FirstName" />
</StackPanel>
<StackPanel Orientation="Horizontal" DataContext="{Binding Path=OneCustomer}">
<Label Content="Last Name:" />
<TextBox x:Name="LastName" Text="{Binding LastName}" />
</StackPanel>
<Button Content="Load Data" x:Name="Load" />
<Button Content="Save" x:Name="SaveChanges" />
<DataGrid x:Name="AllCustomers" />
अग्रिम धन्यवाद।
यह बहुत अच्छी जानकारी है। विशेष रूप से सीएम सम्मेलन को अंडरस्कोर को डॉट नोटेशन के रूप में व्याख्या करने का। मैं निश्चित रूप से ऑटोमैपर और एमवीसी पुस्तक की जांच करूँगा। एक छोटा सवाल हालांकि ... क्या इकाई गुणों को सेटर्स (मूल्य में) में अपडेट किया जाना चाहिए, या मुझे तब तक इंतजार करना चाहिए जब तक कि सेव क्लिक नहीं किया जाता है और सभी को एक बार अपडेट किया जाता है? एक बार फिर धन्यवाद। – DeveloperDan
क्या आप डेटाबेस से बने रहने के लिए कह रहे हैं, जब गुणों को बदलते हुए उपयोगकर्ता मूल्य बदलते हैं। –
नहीं, मैं बचने के लिए जारी रहूंगा (चंकी नहीं चैट नियम)। मैं क्या सोच रहा था कि अगर मैं इकाई का पर्दाफाश नहीं करता हूं, तो मैं सभी इकाई गुणों को अद्यतन करने के लिए सहेजें तक प्रतीक्षा कर सकता हूं। लेकिन अब जब मैं इसके बारे में सोचता हूं जो समझ में नहीं आता है क्योंकि मुझे केवल सभी मूल्यों को अपडेट करना होगा, भले ही केवल एक ही बदला गया हो। इसलिए, मैंने अपने स्वयं के प्रश्न का उत्तर दिया है - मैं सेटर्स में इकाई संपत्ति/फ़ील्ड अपडेट रखूंगा। – DeveloperDan