Правильное использование списка в значении столбца в таблице? - PullRequest
0 голосов
/ 22 января 2019

Это структура моего файла JSON, с которым я работаю.

{
  "date": "2015-11-11",
  "retailer_id": "CLD001",
  "orders": [
    {
      "products": [
        {
          "product_id": "53743443003",
          "quantity": 4,
          "unit_price": 42.71
        }
      ],
      "value": 170.84,
      "customer": {
        "id": 58
      }
    }
  ]
}

Для обработки этого файла Json я создал 3 отдельных класса, которые содержат информацию, такую ​​как productsOrdered, OrderItems и RetailerOrders.Это говорит о том, что sql не может сопоставить тип с общим системным списком?

 [Table]
    public class OrderItems : INotifyPropertyChanged, INotifyPropertyChanging
    {
        private List<ProductsOrdered> po = new List<ProductsOrdered>();
        private double TotalPrice;
        private int customer_id;

       ///this list is also throwing a error i'd suspect after the parent is fixed

        [JsonProperty(PropertyName = "products")]
        [Column]

/// настроить список продуктов, которые были заказаны

 public List<ProductsOrdered> Productsordered
            {
                get { return po; }
                set
                {
                    NotifyPropertyChanging("Products Ordered");
                    po = value;
                    NotifyPropertyChanged("Products Ordered"); 
                }
            }

        [JsonProperty(PropertyName = "value")]
        [Column]
        public double totalprice
        {
            get { return TotalPrice; }
            set {
                NotifyPropertyChanging("Total Price");
                TotalPrice = value;
                NotifyPropertyChanged("Total Price"); 
               }
        }


        [JsonProperty(PropertyName = "id")]
        [Column(IsPrimaryKey = true, IsDbGenerated = false, AutoSync = AutoSync.OnInsert)]
        public int customerid
        {
            get { return customer_id; }
            set {
                NotifyPropertyChanging("Customer_ID");
                customer_id = value;
                NotifyPropertyChanged("Custome_ID");

                }
        }



        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,
                              new PropertyChangedEventArgs(propertyName));
            }
        }

        private void NotifyPropertyChanging(string propertyName)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
            }
        }


        public event PropertyChangedEventHandler PropertyChanged;
        public event PropertyChangingEventHandler PropertyChanging;
    }

/// порядок розничных торговцев, где ошибка происходит из-за необработанного исключения типа 'System.InvalidOperationException', произошедшего в System.Data.Linq.dll

  [Table]
    public class RetailOrders : INotifyPropertyChanged, INotifyPropertyChanging
    {
        private List<OrderItems> oi;
        private string retailer_id;
        private DateTime date;


       [Column(IsPrimaryKey = true, IsDbGenerated = false, AutoSync = AutoSync.OnInsert)]
       [JsonProperty(PropertyName = "retailer_id")]
        public string Retailer_id
        {
            get { return retailer_id; }
            set {
                NotifyPropertyChanging("Retailer ID");
                retailer_id = value;
                NotifyPropertyChanged("Retailer ID");
                }
        }

Дополнительные сведения об ошибке показывают, что она возникла здесь, Невозможноопределить тип SQL для 'System.Collections.Generic.List`1 [SalesManagement.OrderItems]'.это заставляет меня думать, что я неправильно устанавливаю значение столбца

        [JsonProperty(PropertyName = "orders")]
        [Column]
        public List<OrderItems> OrderItems
        {
            get { return oi; }
            set {
                   NotifyPropertyChanging("OrderItems");
                   oi = value;
                   NotifyPropertyChanged("OrderItems"); 
                }
        }


        [JsonProperty(PropertyName = "date")]
        [Column]
        public DateTime Date
        {
            get { return date; }
            set {
                NotifyPropertyChanging("date");
                date = value;
                NotifyPropertyChanged("date");
                }
        }



        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,
                              new PropertyChangedEventArgs(propertyName));
            }
        }

        private void NotifyPropertyChanging(string propertyName)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
            }
        }


        public event PropertyChangedEventHandler PropertyChanged;
        public event PropertyChangingEventHandler PropertyChanging;
    }

/// это моя таблица productsOrdered Table, которая содержит один объект, который имеет ИД, КОЛИЧЕСТВО И ЦЕНУ ЕДИНИЦЫ

    [Table]
    public class ProductsOrdered : INotifyPropertyChanged, INotifyPropertyChanging
    {
        private string productID;
        private int quantity;
        private double unit_price;



        [JsonProperty(PropertyName = "product_id")]
        [Column(IsPrimaryKey = true, IsDbGenerated = false, AutoSync = AutoSync.OnInsert)]
        public string ProductID
        {
            get { return productID; }
            set
            {
                NotifyPropertyChanging("product ID");
                  productID = value;
                  NotifyPropertyChanged("product ID");
            }
        }

        [JsonProperty(PropertyName = "quantity")]
        [Column]
        public int Quantity
        {
            get { return quantity; }
            set {
                NotifyPropertyChanging("quantity");
                quantity = value;
                NotifyPropertyChanged("quantity");
            }
        }
        [JsonProperty(PropertyName = "unit_price")]
        [Column]
        public double UnitPrice
        {
            get { return unit_price; }
            set {
                NotifyPropertyChanging("unit price");
                unit_price = value;
                NotifyPropertyChanged("unit price");
            }
        }



        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,
                              new PropertyChangedEventArgs(propertyName));
            }
        }

        private void NotifyPropertyChanging(string propertyName)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        public event PropertyChangingEventHandler PropertyChanging;
    }

Из-за некоторых исследований я склоняюсь к мысли, что когда получаю список, я использую [ASSOCIATION] вместо [Column], однако я не уверен, как правильно обрабатывать таблицы

1 Ответ

0 голосов
/ 22 января 2019

Я думаю, что вы путаете проблемы, пытаясь повторно использовать классы для JSON, MVVM и SQL.Гораздо лучше иметь разные (но в конечном итоге очень похожие) классы для сериализации, представлений и сущностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...