У меня есть следующий AggregateRoot р>
Код: Выделить всё
public sealed class Event : TenantOwnedEntity
{
... removed for clarity ...
private Event(EventId id,
TenantId tenantId,
EventName name,
EventDescription description,
DateOnly startDate,
DateOnly? endDate,
EventCost cost,
EventAttendiesType attendiesType)
: base(id, tenantId)
{
Name = name;
Description = description;
StartDate = startDate;
EndDate = endDate;
Cost = cost;
AttendeesType = attendiesType;
}
public EventName Name { get; private set; }
public EventDescription Description { get; private set; }
public DateOnly StartDate { get; private set; }
public DateOnly? EndDate { get; private set; }
public EventCost Cost { get; private set; }
public EventAttendiesType AttendeesType { get; private set; }
... removed for clarity ...
}
Код: Выделить всё
internal class EventConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasKey(e => e.Id);
builder
.Property(e => e.Id)
.HasConversion
(
id => id.Id,
value => new EventId(value)
);
builder.HasIndex(e => e.TenantId);
builder
.Property(e => e.Name)
.HasConversion
(
name => name.Value,
value => EventName.Create(value).Value
)
.HasColumnType($"varchar({EventName.MAX_LENGTH})")
.HasMaxLength(EventName.MAX_LENGTH);
builder
.Property(e => e.Description)
.HasConversion
(
description => description.Value,
value => EventDescription.Create(value).Value
)
.HasColumnType($"varchar({EventDescription.MAX_LENGTH})")
.HasMaxLength(EventDescription.MAX_LENGTH);
builder
.Property(e => e.Cost)
.HasConversion
(
cost => EventCostToDb(cost),
value => EventCostFromDb(value)
)
.HasColumnType("varchar(50)")
.HasMaxLength(50);
builder
.Property(e => e.AttendeesType)
.HasConversion
(
attendeeType => AttendeeTypeToDb(attendeeType),
value => AttendeeTypeFromDb(value)
)
.HasColumnType("varchar(50)")
.HasMaxLength(50);
}
Невозможно создать «DbContext» типа «AppContext». Исключение «Для типа сущности «Событие» не найден подходящий конструктор. Следующие конструкторы имели параметры, которые нельзя было привязать к свойствам типа сущности:
Невозможно связать 'attendiesType' в 'Event (EventId id, TenantId tenantId, имя EventName, описание EventDescription, DateOnly startDate, DateOnly? endDate, EventCost Cost, EventAttendiesType AttiesType)'
Обратите внимание, что только сопоставленные свойства могут быть привязаны к параметрам конструктора. Переходы к связанным сущностям, включая ссылки на принадлежащие им типы, не могут быть привязаны». был выброшен при попытке создать экземпляр. Информацию о различных шаблонах, поддерживаемых во время разработки, см. на странице https://go.microsoft.com/fwlink/?linkid=851728
. В атрибуте «atties» нет ничего особенного. Типа это базовый объект ValueObject, такой же, как EventCost, по поводу которого EF Core не жалуется.
Любые предложения относительно того, что здесь происходит, будут оценены по достоинству — я рвал на себе волосы из-за этого уже пару часов
Подробнее здесь: https://stackoverflow.com/questions/792 ... conversion
Мобильная версия