Я вручную настроил свои отображения Entity Framework, используя свободный конструктор моделей, и все отлично работает в тот момент, когда я запрашиваю, но при попытке создать сущность я получаю следующее:
Значение не может быть нулевым. Имя параметра :lationalTypeMapping
и вот трассировка стека:
в Microsoft.EntityFrameworkCore.Utilities.Check.NotNull [T] (значение T, имя параметра String)
в Microsoft.EntityFrameworkCore.Storage.Internal.TypeMappedRelationalParameter..ctor (String invariantName, String name, RelationalTypeMappinglationalTypeMapping, Nullable 1 nullable)<br>
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder.AddParameter(String invariantName, String name, IProperty property)<br>
at Microsoft.EntityFrameworkCore.Storage.RelationalCommandBuilderExtensions.AddParameter(IRelationalCommandBuilder commandBuilder, String invariantName, String name, IProperty property)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.CreateStoreCommand()
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(DbContext _, ValueTuple
2 параметра, CancellationToken cancellationToken)
в Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync [TState, TResult] (состояние TState, Func 4 operation, Func
4 verifySucceeded, CancellationToken cancellationToken)
в Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync (IReadOnlyList 1 entriesToSave, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at FastTrack.EntityFramework.Services.EntityFrameworkService
3.CreateAsync (TDto dto)
Вот мой код сопоставления:
builder.Entity(typeof(Page), b =>
{
b.HasOne(typeof(Site))
.WithMany()
.HasForeignKey("SiteId")
.IsRequired();
});
builder.Entity<Site>()
.HasMany(x => x.Pages)
.WithOne(x => x.Site)
.HasForeignKey("SiteId")
.IsRequired();
Вот сущности:
public class Site
{
public int Id {get; set;}
public string Name {get; set;}
public IList<Page> Pages { get; set; }
public string Domain { get; set; }
}
public class Page
{
public int Id {get; set;}
public string Name {get; set;}
public IList<PageSelector> PageSelectors { get; set; }
public string Path { get; set; }
public Site Site { get; set; }
[ForeignKey("Site")]
public int SiteId { get; set; }
}
Что могло вызвать это? Кажется, что сопоставления настроены правильно, и все работает до тех пор, пока я не хочу вставить что-то в базу данных.