Как сделать модели для сервера и клиента?

Доброго времени суток.
Задача: сделать модель для клиента (базовая информация из базы данных), сделать модель для сервера (вся информация из базы данных, включая связи).
База данных: MySQL
ORM: EF.Core
Моя затея:

Модель для клиента:

/// <summary>
/// Предмет.
/// </summary>
public class CUItem : CUBaseDbId
{
    /// <summary>
    /// id категории.
    /// </summary>
    public int CategoryId { get; set; }

    /// <summary>
    /// Категория.
    /// </summary>
    [JsonIgnore]
    public CUCategory Category { get; set; }

    /// <summary>
    /// Артикул.
    /// </summary>
    public string Code { get; set; }

    /// <summary>
    /// Название.
    /// </summary>
    public string Name { get; set; }
}

Модель для сервера:

public class DbItem : CUItem
{
    /// <summary>
    /// Предметы на складе.
    /// </summary>
    public virtual ICollection<CUItemStorage> StorageItems { get; set; }
}

Но такой подход не нравится EF.Core и он создает 2 одинаковых связи
2 одинаковых связи

Как лучше делать? Создать отдельные модели для клиента и отдельные для сервера (и, например, в серверной модели сделать метод ToClientModel())? Но тогда при любых изменениях придется обновлять сразу 2 модели, а не 1, что, конечно, хотелось бы.


Ответы (1 шт):

Автор решения: Aziz Umarov

Создать отдельные модели для клиента и отдельные для сервера (и, например, в серверной модели сделать метод ToClientModel())?

Да обычно это так и делается. Разделяют UI классы и модели объектов db. Собственно не стараются очень сильно завязываться на базу . Ведь база базе рознь и переход от sql db на no sql может оказаться очень болезненным.

→ Ссылка