Проблема
У меня есть необходимость инициализировать новую сущность домена, которая принимает объект базового значения через его конструктор.Механизм сохранения за доменом - это SQL-сервер, управляемый Entity Framework Core.
Проблема, с которой я столкнулся, заключается в том, что когда EF Core пытается создать схему базы данных, он не может связать параметр объекта значения с каким-либо сопоставленным свойством.
Что мне здесь не хватает?Любая помощь будет высоко ценится.
Моя упрощенная модель домена
public sealed class Address
{
public string StreetAddress { get; }
public string Town { get; }
public string PostalCode { get; }
internal Address(string streetAddress, string town, string postalCode)
{
...
}
}
public sealed class PropertyListing
{
public Guid Id { get; }
public string Title { get; }
public string Description { get; }
public Address Address { get; }
public decimal GuidePrice { get; }
internal PropertyListing(Guid id, string title, string description, Address address, decimal guidePrice)
{
...
}
}
Моя конфигурация модели базы данных
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<PropertyListing>(builder =>
{
builder.HasKey(model => model.Id);
builder.Property(model => model.Title).IsRequired();
builder.Property(model => model.Description).IsRequired();
builder.Property(model => model.GuidePrice).IsRequired();
builder.OwnsOne(model => model.Address, address =>
{
address.Property(model => model.StreetAddress).IsRequired();
address.Property(model => model.Town).IsRequired();
address.Property(model => model.PostalCode).IsRequired();
});
});
}
Результаты
Когда это произойдетПри создании схемы базы данных Entity Framework выдает следующее исключение:
System.InvalidOperationException : 'Не найден подходящий конструктор для типа сущности' PropertyListing ',Следующие параметры не могут быть связаны со свойствами объекта: ' address '. '
Мой технологический стек
- Entity FrameworkCore 2.1.0-preview1-final
- ASP.NET Core 2.0
Справочные материалы