实体框架核心无效操作。连接已关闭

时间:2019-11-30 04:56:56

标签: entity-framework-core

我使用的是实体框架核心,在存储过程中发布xml数据时会引发错误。其他存储过程也正在使用xml数据。但是我发布的存储过程调用不起作用。 如果我直接在sql server上将生成的xml数据执行到存储过程,则它正在工作。 它不仅与实体框架一起使用。

我的Db上下文

public class ApplicationContext : DbContext
{
    public ApplicationContext(DbContextOptions<ApplicationContext> options)
    : base(options)
    {
        Database.SetCommandTimeout((int)TimeSpan.FromMinutes(5).TotalSeconds);
    }
    //public DbSet<Category> Categories { get; set; }
    protected override void OnModelCreating(ModelBuilder builder)
    {

        builder.Entity<LoginModel>().HasNoKey();
        builder.Entity<LoginModel>().Ignore(b => b.Token);
        builder.Entity<LoginModel>().Property<Int32>("RetValue");

        builder.Entity<BranchViewModel>().HasNoKey();

        builder.Entity<MenuModel>().HasNoKey();
        builder.Entity<MenuModel>().Ignore(b => b.role);
        builder.Entity<MenuModel>().Ignore(b => b.subMenu);

        builder.Entity<BlockMaster>().HasNoKey();
        builder.Entity<DistrictMaster>().HasNoKey();
        builder.Entity<TahsilMaster>().HasNoKey();
        builder.Entity<VillageMaster>().HasNoKey();
        builder.Entity<BranchMaster>().HasNoKey();
        builder.Entity<MemberViewModel>().HasNoKey();
        builder.Entity<UserViewModel>().HasNoKey();
        builder.Entity<DropDownModel>().HasNoKey();
        builder.Entity<ResponseModel>().HasNoKey();
        builder.Entity<Member>().HasNoKey();
        builder.Entity<Home>().HasNoKey();

        builder.Entity<AgriCultureEquipment>().HasNoKey();
        builder.Entity<MemberOtherLones>().HasNoKey();
        builder.Entity<MemberDocument>().HasNoKey();
        builder.Entity<GroupDetails>().HasNoKey();
        builder.Entity<LedgerDetails>().HasNoKey();

        //builder.Entity<BranchMaster>().HasKey(x => x.BranchId);
        //builder.Entity<BranchMaster>().HasOne(x => x.TahsilMaster).WithOne(x=> x.BranchMaster).HasForeignKey(x=> x.);
        //builder.Entity<TahsilMaster>().HasKey(x => x.TehsilID);
        //builder.Entity<TahsilMaster>().HasOne(x => x.BranchMaster);

        //builder.Entity<BranchMaster>().HasOne(x => x.TahsilMaster).WithOne(x => x.BranchMaster).HasForeignKey<TahsilMaster>(x=> x.TehsilID);
        //builder.Entity<BranchMaster>().HasOne(a => a.TahsilMaster).WithOne(b => b.BranchMaster).HasForeignKey<TahsilMaster>(b => b.TehsilID);

        base.OnModelCreating(builder);
    }

    public DbSet<LoginModel> LoginModel { get; set; }

    public DbSet<BranchViewModel> LoginModel1 { get; set; }
    public DbSet<MenuModel> MenuModel { get; set; }

    public DbSet<StateMaster> StateMaster { get;set;}
    public DbSet<DistrictMaster> DistrictMaster { get; set; }

    public DbSet<BlockMaster> BlockMaster { get; set; }

    public DbSet<TahsilMaster> TahsilMaster { get; set; }

    public DbSet<VillageMaster> VillageMaster { get; set; }

    public DbSet<BranchMaster> BranchMaster { get; set; }

    public DbSet<MemberViewModel> MemberViewModel { get; set; }

    public DbSet<UserViewModel> UserViewModel { get; set; }
    public DbSet<DropDownModel> DropDownModel { get; set; }

    public DbSet<ResponseModel> ResponseModel { get; set; }

    public DbSet<Member> MemberModel { get; set; }

    public DbSet<Home> Home { get; set; }

    public DbSet<AgriCultureEquipment> AgriCultureEquipment { get; set; }
    public DbSet<MemberOtherLones> MemberOtherLones { get; set; }
    public DbSet<MemberDocument> MemberDocument { get; set; }

    public DbSet<GroupDetails> GroupDetails { get; set; }
    public DbSet<LedgerDetails> LedgerDetails { get; set; }



}

出现异常。

   return await _context.Query<T>().FromSql(SpName, param).ToListAsync(); 

存储库

    [Obsolete]
     public async Task<List<T>> ExecuteStoredProcedureWithList<T>(string SpName, object[] param) 
    where T : class
    {
        //return _context.LoginModel.FromSql(SpName, param).ToListAsync();
        //return login;
        SpName = "EXECUTE " + SpName + " ";
        for(int i =0; i< param.Length; i++)
        {
            SpName = SpName + "{" + i.ToString() + "},";
        }

        SpName = SpName.Remove(SpName.Length - 1, 1);

        try
        {
            return await _context.Query<T>().FromSql(SpName, param).ToListAsync();
        }
        catch (Exception ex)
        {

            throw;
        }

    }

服务

   public async Task<List<ResponseModel>> SavePayment(string xml)
    {
        List<ResponseModel> result = await _repository.ExecuteStoredProcedureWithList<ResponseModel> 
        ("ePACS_SavePaymentEntry", new object[] { xml });
        return result;
    }

传递xml参数时获取异常

 Invalid operation. The connection is closed.

堆栈跟踪

          at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__164_0(Task`1 result)
       at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__17.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__17.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__17.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.AsyncEnumerator.<InitializeReaderAsync>d__18.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__7`2.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.AsyncEnumerator.<MoveNextAsync>d__17.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.<ToListAsync>d__64`1.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.<ToListAsync>d__64`1.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at UserManagement.Persistence.Context.Repository.<ExecuteStoredProcedureWithList>d__3`1.MoveNext() in D:\Manoj\UserManagement.Persistence\Context\Repository.cs:line 58

0 个答案:

没有答案