Skip to content

FreeSql.Provider.SqlServer SeedData List集合时无法正常增加分表的种子数据 #362

Closed
@luoyunchong

Description

@luoyunchong

数据库:Sql server 2017
驱动: FreeSql.Provider.SqlServer Version="1.6.0"

我写了个demo作为参考sqlserver-seeddata-problem.zip

image

此demo,他只会增加主表的Blog的二条数据。Posts(评论回复)无法增加


            Fsql.CodeFirst.Entity<Blog>(e =>
            {

                e.HasData(new List<Blog>()
                {
                        new Blog("title","content",DateTime.Now,false)
                        {
                            Posts=new List<Post>
                            {
                                new Post("replyContent",DateTime.Now,false),
                                new Post("replyContent",DateTime.Now,false),
                                new Post("replyContent",DateTime.Now,false),
                            }
                        },
                        new Blog("title","content",DateTime.Now,false)
                        {
                            Posts=new List<Post>
                            {
                                new Post("replyContent",DateTime.Now,false),
                                new Post("replyContent",DateTime.Now,false),
                                new Post("replyContent",DateTime.Now,false),
                            }
                        }
                });
            });

但如果只有一条Blog的数据时,分表的数据能正常增加


            Fsql.CodeFirst.Entity<Blog>(e =>
            {

                e.HasData(new List<Blog>()
                {
                        new Blog("title","content",DateTime.Now,false)
                        {
                            Posts=new List<Post>
                            {
                                new Post("replyContent",DateTime.Now,false),
                                new Post("replyContent",DateTime.Now,false),
                                new Post("replyContent",DateTime.Now,false),
                            }
                        }
                });
            });

SeedData 种子数据,我试了下在MySql和Sqlite下都能正常生成种子数据,然后到了SqlServer下,就会出现如下错误

     NullReferenceException: Object reference not set to an instance of an object.
lambda_method(Closure , object , object )
FreeSql.Extensions.EntityUtil.EntityUtilExtensions.MapEntityValue(IFreeSql orm, Type entityType, object entityFrom, object entityTo)
FreeSql.DbSet<TEntity>.AddRange(IEnumerable<TEntity> data)
FreeSql.BaseRepository<TEntity>.Insert(IEnumerable<TEntity> entitys)
FreeSql.Extensions.EfCoreFluentApi.EfCoreTableFluent<T>+<>c__DisplayClass17_0.<HasData>b__1(object s, SyncStructureAfterEventArgs e)
FreeSql.Internal.CommonProvider.CodeFirstProvider.SyncStructure(TypeAndName[] objects)
FreeSql.Internal.CommonProvider.CodeFirstProvider.SyncStructure<TEntity>()
FreeSql.Internal.CommonProvider.Select0Provider<TSelect, T1>..ctor(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere)
FreeSql.Internal.CommonProvider.Select1Provider<T1>..ctor(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere)
FreeSql.SqlServer.Curd.SqlServerSelect<T1>..ctor(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere)
FreeSql.SqlServer.SqlServerProvider<TMark>.Select<T1>()
sqlserver_seeddata_problem.Controllers.BlogController.GetBlogs() in BlogController.cs
-
        {
            this.freeSql = freeSql;
        }
        public List<Blog> GetBlogs()
        {
            return freeSql.Select<Blog>().ToList();
        }
    }
}
lambda_method(Closure , object , object[] )
Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(object target, object[] parameters)
Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions