我已经使用流利的模型构建器手动设置了Entity Framework映射,并且在查询时一切正常,但是在尝试创建实体时,这是我得到的:
值不能为null。参数名称:relationalTypeMapping
这是堆栈跟踪:
在Microsoft.EntityFrameworkCore.Utilities.Check.NotNull [T](T值,字符串parameterName)
在Microsoft.EntityFrameworkCore.Storage.Internal.TypeMappedRelationalParameter..ctor(字符串invariantName,字符串名称,RelationalTypeMapping,relationalTypeMapping,Nullable1 nullable)
2个参数,CancellationToken cancelToken)中 在Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync [TState,TResult](TState状态,Func
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder.AddParameter(String invariantName, String name, IProperty property)
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 _, ValueTuple4 operation, Func
4验证成功,CancellationToken cancelToken)处 在Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IReadOnlyList1 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; }
}
什么可能导致这种情况发生?映射似乎已正确设置,并且一切正常,直到我要向数据库中插入内容为止。