Я работаю над приложением WP7 (на основе ODataWPNorthwindSample из MSDN) с использованием библиотеки ODATA v2 с классом DataServiceState. В этом примере у меня есть класс MainViewModel.cs, где
> DataServiceCollection<Customer> customers;
>
> public DataServiceCollection<Customer> Customers
> {
> get { return this.customers; }
>
> private set
> {
> this.customers = value;
>
> this.customers.LoadCompleted +=
> this.OnCustomersLoaded;
> this.customers.CollectionChanged += (o, e) => {
> this.NotifyPropertyChanged("CustomersTitle"); };
>
> this.NotifyPropertyChanged("Customers");
> this.NotifyPropertyChanged("CustomersTitle");
> }
> }
Где класс Customer имеет некоторые атрибуты(очень короткая версия):
> public partial class Customer :
> global::System.ComponentModel.INotifyPropertyChanged
> {
>
>
> [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design",
> "1.0.0")]
> public static Customer CreateCustomer(string customerID,
> string companyName)
> {
> Customer customer = new Customer();
> customer.CustomerID = customerID;
> customer.CompanyName = companyName;
> return customer;
> }
>
> [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design",
> "1.0.0")]
> public string Address
> {
> get
> {
> return this._Address;
> }
> set
> {
> this.OnAddressChanging(value);
> this._Address = value;
> this.OnAddressChanged();
> this.OnPropertyChanged("Address");
> }
> }
>
> [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design",
> "1.0.0")]
> private string _Address;
> partial void OnAddressChanging(string value);
>
partial void OnAddressChanged();
По какой-то причине мне нужно добавить еще один атрибут «AddressLocal», который будет использоваться только на стороне клиента, и связать его с XAML.Значение «AddressLocal» я вычисляю на основе атрибута «Address».Таким образом, если «Address» будет изменен, «AddressLocal» также изменится.
> public string AddressLocal
> {
> get
> {
> return this._ AddressLocal;
> }
> set
> {
> this.On AddressLocal Changing(value);
> this._AddressLocal = value;
> this.OnAddressLocal Changed();
> this.OnPropertyChanged("AddressLocal ");
> }
> }
>
> private string _AddressLocal;
> partial void OnAddressLocal Changing(string value);
> partial void OnAddressLocal Changed();
Но этот атрибут не существует в базе данных на сервере, и он мне там не нужен, но когда я вызываю
> App.ViewModel.Context.BeginSaveChanges(OnSaveCompleted, null);
>
> void OnSaveCompleted(IAsyncResult asyncResult)
> {
> Deployment.Current.Dispatcher.BeginInvoke(() =>
> {
> try
> {
> App.ViewModel.Context.EndSaveChanges(asyncResult);
> this.StatusMessage.Text = "Successfully saved
> changes";
> }
Это дает мне исключения, потому что это DataServiceCollection клиентов;отличается от объектов клиентов в контексте.Я знаю, что это, вероятно, произошло из-за ошибки в архитектуре приложения.Моей первой мыслью было: создать Oblect «CustomerLocal» и наследовать от Customer, но это не работает.Есть ли у вас какие-либо идеи?