C# DDD с EF Core использует одну и ту же сущность/агрегат домена для таблицы сопоставления или отдельного класса [закрытC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# DDD с EF Core использует одну и ту же сущность/агрегат домена для таблицы сопоставления или отдельного класса [закрыт

Сообщение Anonymous »

Я не знаю, какой вариант из этих двух наиболее подходит.
Вариант 1: использовать совокупный корень или объект (агрегированный подобъект) для сопоставления таблицы.

Код: Выделить всё

public class User : AggregateRoot
{
string Name { get; }
string Email { get; }

// Logic ...
}
А теперь настройте сущность EF Core:

Код: Выделить всё

public class EntityTypeConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
// ... map props.
}
}
Вариант 2: продублируйте код и создайте 2 класса, но с собственной областью действия.

Код: Выделить всё

public class User : AggregateRoot
{
string Name { get; }
string Email { get; }

// Logic ...
}

public class UserTable
{
Guid Id { get; }
string Name { get; }
string Email { get; }

// No logic here ...
}

Код: Выделить всё

public class EntityTypeConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
// ... map props.
}
}
При втором варианте я могу хранить свои объекты в одной папке, например EFCoreEntities, и код должен быть чище, но с большим количеством дублированного кода.
При втором подходе мне нужно написать дополнительные преобразователи между UserTable и User (возможно, используя Mapster/automapper)
Например, это будет IUserRepository с метод:

Код: Выделить всё

// Here parameter is an User but have to map into UserTable
Add(User user)
{
var entity = user.MapToUserTable();
dbContext.Users.Add(entity)
// ...
}
Какой вариант вы используете, какие есть преимущества и недостатки?

Подробнее здесь: https://stackoverflow.com/questions/780 ... g-table-or
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Драйвер Mongodb C#: агрегат не использует созданные индексы
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как интегрировать идентичность ASP.NET CORE в чистую архитектуру (DDD) без нарушения независимости домена?
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Оптимизация событий домена для массовых операций и синхронизации базы данных в DDD
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Политики авторизации и домена в DDD: Должны ли аутентификация/авторизация обрабатываться на уровне приложения?
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Когда уникальность считается инвариантом домена в DDD?
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»