0

Добрый день! Подскажите, как должны выглядеть свойства модели, если есть следующее представлением клиента (JSON только как пример):

{
  "Customer": {
    "Name": "Petr Petrovich",
    "Addresses": [
      {
        "Type": "VISITING",
        "Street": {
          "Street1": "Street 12-12",
          "Street2": "(P.O. Box 190)"
        },
        "PostalCode": "100000",
        "Town": "Bobruisk"
      }
    ],
    "Phone": [
      {
        "Type": "WORK",
        "Value": "+7555 555 555"
      },
      {
        "Type": "MOBILE",
        "Value": "+3 999"
      }
    ],
    "Email": [
      {
        "Type": "WORK",
        "Value": "admin@bobruisk.com"
      }
    ],
    "Notes": "Cool customer."
  }
}

Я это описал следующим способом:

namespace CustomerApplication.Models
{
    using System.ComponentModel;

    public class Customer
    {
        public int Id { get; set; }

        [DisplayName("Имя")]
        public string Name { get; set; }

        [DisplayName("Адрес 1")]
        public string Street1 { get; set; }

        [DisplayName("Адрес 2")]
        public string Street2 { get; set; }

        [DisplayName("Почтовый индекс")]
        public string PostalCode { get; set; }

        [DisplayName("Город")]
        public string Town { get; set; }

        [DisplayName("Рабочий телефон")]
        public int WorkPhone { get; set; }

        [DisplayName("Мобильный телефон")]
        public int MobilePhone { get; set; }

        [DisplayName("E-mail")]
        public string Email { get; set; }

        [DisplayName("Заметка")]
        public string Notes { get; set; }

        [DisplayName("Активность аккаунта")]
        public bool Active { get; set; }
    }
}

Меня смущают некие "type", как их отобразить и нужны ли они вообще? Планируется обычная учётка клиентов (добавление, поиск, редактирование, удаление, сортировка).

e1ement
  • 153

1 Answers1

2

Все несколько веселее выглядит на самом деле - там сложный объект содержащий в себе другие объекты (аннотации сами проставьте):

  public class Street
    {
        public string Street1 { get; set; }
        public string Street2 { get; set; }
    }

    public class Address
    {
        public string Type { get; set; }
        public Street Street { get; set; }
        public string PostalCode { get; set; }
        public string Town { get; set; }
    }

    public class Phone
    {
        public string Type { get; set; }
        public string Value { get; set; }
    }

    public class Email
    {
        public string Type { get; set; }
        public string Value { get; set; }
    }

    public class Customer
    {
        public string Name { get; set; }
        public IList<Address> Addresses { get; set; }
        public IList<Phone> Phone { get; set; }
        public IList<Email> Email { get; set; }
        public string Notes { get; set; }
    }

Генерировал тут

srvr4vr
  • 3,486
  • а не подскажете, как добавить такую фитчу: сколько раз профиль клиента изменялся и когда? – e1ement Feb 14 '18 at 12:56
  • А сервер который json выдает тоже вы пишите или сторонний? Во втором случае боюсь что никак. – srvr4vr Feb 14 '18 at 12:57
  • нет, это простое mvc приложение с локальной БД, json вообще для примера был дан, чтобы понять какие данные о клиенте необходимо запоминать. – e1ement Feb 14 '18 at 13:25
  • Ну так заведите поле, и манипулируйте им . – srvr4vr Feb 14 '18 at 13:26
  • так а как это описать в свойстве? public class ProfileUpdate { public DateTime UpdateDateTime { get; set; } } и как подсчитать кол-во то? – e1ement Feb 14 '18 at 13:54
  • Задайте отдельный вопрос - там сформулируйте конкретно чего вы хотите добиться. – srvr4vr Feb 14 '18 at 13:55
  • Сергей, чтобы не плодить вопросы, вы не подскажете как добавить начальные данные в такую модель? var customer = new Customer { Name = "John White", Notes = "Best client", Active = true, Email = new List() { "WORK", "admin@bobruisk.com" }), Addresses = new List(), Phone = new List() }; – e1ement Feb 14 '18 at 14:24
  • 1
    Ну напишите в конструкторе все, передавайте данными параметрами к конструктору. – srvr4vr Feb 14 '18 at 14:25
  • написал, все ок. Теперь другой момент, пытаюсь создать контроллер CRUD на модель Customer и мне выдает ошибку "has no key defined" в phone, email, adresses. Указываю в каждом классе [Key][Column(Order=1)], но не работает, подозреваю, что я неверно указываю ключи. Подскажете как должно выглядеть? – e1ement Feb 15 '18 at 07:29
  • 1
    Создавай отдельный вопрос. Запарил уже) – srvr4vr Feb 15 '18 at 07:30