Как сделать модели для сервера и клиента?
Доброго времени суток.
Задача: сделать модель для клиента (базовая информация из базы данных), сделать модель для сервера (вся информация из базы данных, включая связи).
База данных: 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 одинаковых связи

Как лучше делать? Создать отдельные модели для клиента и отдельные для сервера (и, например, в серверной модели сделать метод ToClientModel())? Но тогда при любых изменениях придется обновлять сразу 2 модели, а не 1, что, конечно, хотелось бы.
Ответы (1 шт):
Создать отдельные модели для клиента и отдельные для сервера (и, например, в серверной модели сделать метод ToClientModel())?
Да обычно это так и делается. Разделяют UI классы и модели объектов db. Собственно не стараются очень сильно завязываться на базу . Ведь база базе рознь и переход от sql db на no sql может оказаться очень болезненным.