Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ObjectDisposedException EF错误_C#_Entity Framework - Fatal编程技术网

C# ObjectDisposedException EF错误

C# ObjectDisposedException EF错误,c#,entity-framework,C#,Entity Framework,我有一个问题,因为我总是按下操作按钮,我得到了这个例外 这部分给了我一个错误 public void InserirComCopia(TabelaPreco tabPrec, string copiarDe) { var lista = new List<PrecoProduto>(); var tb = InserirTabelaVazia(tabPrec); var rep = new PrecoRepositorio()

我有一个问题,因为我总是按下操作按钮,我得到了这个例外

这部分给了我一个错误

public void InserirComCopia(TabelaPreco tabPrec, string copiarDe)
    {
        var lista = new List<PrecoProduto>();
        var tb = InserirTabelaVazia(tabPrec);
        var rep = new PrecoRepositorio();
        lista = rep.ObterPrecoPorTabela(Int32.Parse(copiarDe));
        var ls = new List<PrecoProduto>();

        using (var context = new indigo.DataModel.IndigoContext())
        {
            foreach (var item in lista)
            {
                var p = new PrecoProduto()
                {
                    preco = item.preco,
                    TabPreco = tb,
                    TabPrecoId = tb.Id,
                    Produto = item.Produto,
                    ProdutoId = item.ProdutoId
                };
                ls.Add(p);
            }
            context.PrecoProduto.AddRange(ls);
            context.SaveChanges();
        }
    }
public void InserirComCopia(tabelaperco tabPrec,string copiard)
{
var lista=新列表();
var tb=插入式贝拉瓦齐亚(tabPrec);
var rep=new preprecorpositorio();
lista=rep.obterprecorportabela(Int32.Parse(copiard));
var ls=新列表();
使用(var context=new indigo.DataModel.IndigoContext())
{
foreach(列表A中的变量项)
{
var p=新的预生产程序()
{
preco=item.preco,
TabPreco=tb,
TabPrecoId=tb.Id,
Produto=项目。Produto,
ProdutoId=item.ProdutoId
};
ls.添加(p);
}
context.preproduto.AddRange(ls);
SaveChanges();
}
}
这是我所有的控制器:

public TabelaPreco ObterTablePrecoPorID(int Id, List<TabelaPreco> tabelaPreco)
    {
        return tabelaPreco.Where(t => t.Id == Id)
                          .FirstOrDefault();
    }
    public List<TabelaPreco> ObterTodasAsTabelas()
    {
        List<TabelaPreco> model = new List<TabelaPreco>();
        using (var context = new indigo.DataModel.IndigoContext())
        {
            model = context.TabelaPreco.ToList();
        }
        return model;
    }
    public List<TabelaPreco> Buscar(string busca)
    {
        List<TabelaPreco> model = new List<TabelaPreco>();
        using (var context = new indigo.DataModel.IndigoContext())
        {
            model = context.TabelaPreco.Where(tb => tb.Desc.Contains(busca)).ToList();
        }
        return model;
    }
    public TabelaPreco InserirTabelaVazia(TabelaPreco tab)
    {
        using (var context = new indigo.DataModel.IndigoContext())
        {
            context.TabelaPreco.Add(tab);
            context.SaveChanges();
            return tab;
        }
    }
    public void Deletar(int id)
    {
        var tabela = new TabelaPreco();
        using (var context = new indigo.DataModel.IndigoContext())
        {
            tabela = context.TabelaPreco.Where(tb => tb.Id == id)
                                        .FirstOrDefault();
            context.TabelaPreco.Remove(tabela);
            context.SaveChanges();
        }
    }
    public void InserirComCopia(TabelaPreco tabPrec, string copiarDe)
    {
        var lista = new List<PrecoProduto>();
        var tb = InserirTabelaVazia(tabPrec);
        var rep = new PrecoRepositorio();
        lista = rep.ObterPrecoPorTabela(Int32.Parse(copiarDe));
        var ls = new List<PrecoProduto>();

        using (var context = new indigo.DataModel.IndigoContext())
        {
            foreach (var item in lista)
            {
                var p = new PrecoProduto()
                {
                    preco = item.preco,
                    TabPreco = tb,
                    TabPrecoId = tb.Id,
                    Produto = item.Produto,
                    ProdutoId = item.ProdutoId
                };
                ls.Add(p);
            }
            context.PrecoProduto.AddRange(ls);
            context.SaveChanges();
        }
    }
    public TabProdListModel PegarProdutosDaTabela(int id)
    {
        using (var context = new indigo.DataModel.IndigoContext())
        {
            var modelTab = context.TabelaPreco.Where(tb => tb.Id == id).First();
            var modelProd = context.Produto.ToList();
            var model = context.TabelaPreco
                           .Where(t => t.Id == id)
                           .Join(
                               context.PrecoProduto,
                               t => t.Id,
                               x => x.TabPrecoId,
                               (t, x) => new { t, x }
                           )
                           .Join(
                               context.Produto,
                               p => p.x.ProdutoId,
                               y => y.Id,
                               (p, y) => new ListProduto
                               {
                                   produtoId = y.Id,
                                   produto = y.Nome,
                                   precoProduto = p.x.preco,
                                   Cor = y.Cor,
                                   Tamanho = y.Tamanho
                               }
                           )
                           .ToList();

            var ls = new TabProdListModel()
            {
                tabela = modelTab,
                Produtos = modelProd,
                TdProdutos = model
            };

            var prod = ls.Produtos.ToList();
            if (modelProd.Count() != 0)
                foreach (var item in ls.Produtos)
                {
                    foreach (var td in ls.TdProdutos)
                    {
                        if (item.Id == td.produtoId)
                        {
                            prod.Remove(item);
                            break;
                        }

                    }
                }

            ls.Produtos = prod;
            return ls;
        }
    }
    public void AdicionarProdTab(int Produto, double Valor, int Tabela)
    {
        using(var context = new indigo.DataModel.IndigoContext())
        {
            var produto = context.Produto.Where(p => p.Id == Produto).FirstOrDefault();
            var tabela = context.TabelaPreco.Where(tp => tp.Id == Tabela).FirstOrDefault();
            var precoProduto = new PrecoProduto()
            {
                preco = Valor,
                Produto = produto,
                TabPreco = tabela
            };
            context.PrecoProduto.Add(precoProduto);
            context.SaveChanges();
        }
    }
    public void EditarProdutoTabela(int ProdutoId, double valor, int tabela)
    {
        using (var context = new indigo.DataModel.IndigoContext())
        {
            var precoProduto = context.PrecoProduto.Where(x => x.ProdutoId == ProdutoId && x.TabPrecoId == tabela).FirstOrDefault();
            precoProduto.preco = valor;
            context.PrecoProduto.Attach(precoProduto);
            var Entry = context.Entry(precoProduto);
            Entry.Property(e => e.preco).IsModified = true;
            context.SaveChanges();
        }
    }
    public void Remover(int id)
    {

    }
public TabelaPreco obertableprecoporid(int-Id,List TabelaPreco)
{
返回tabelaPreco.Where(t=>t.Id==Id)
.FirstOrDefault();
}
公共列表ObterTodasAsTabelas()
{
列表模型=新列表();
使用(var context=new indigo.DataModel.IndigoContext())
{
model=context.TabelaPreco.ToList();
}
收益模型;
}
公共列表客车(字符串客车)
{
列表模型=新列表();
使用(var context=new indigo.DataModel.IndigoContext())
{
model=context.TabelaPreco.Where(tb=>tb.Desc.Contains(busca)).ToList();
}
收益模型;
}
公共TabelaPreco InserirTabelaVazia标签(TabelaPreco标签)
{
使用(var context=new indigo.DataModel.IndigoContext())
{
context.TabelaPreco.Add(tab);
SaveChanges();
返回选项卡;
}
}
公共void Deletar(int-id)
{
var tabela=new TabelaPreco();
使用(var context=new indigo.DataModel.IndigoContext())
{
tabela=context.TabelaPreco.Where(tb=>tb.Id==Id)
.FirstOrDefault();
context.TabelaPreco.Remove(tabela);
SaveChanges();
}
}
公共空白插入式副本(TabelaPreco-tabPrec,字符串副本)
{
var lista=新列表();
var tb=插入式贝拉瓦齐亚(tabPrec);
var rep=new preprecorpositorio();
lista=rep.obterprecorportabela(Int32.Parse(copiard));
var ls=新列表();
使用(var context=new indigo.DataModel.IndigoContext())
{
foreach(列表A中的变量项)
{
var p=新的预生产程序()
{
preco=item.preco,
TabPreco=tb,
TabPrecoId=tb.Id,
Produto=项目。Produto,
ProdutoId=item.ProdutoId
};
ls.添加(p);
}
context.preproduto.AddRange(ls);
SaveChanges();
}
}
公共选项卡ProdListModel PEGARPRODUTSTABELA(int id)
{
使用(var context=new indigo.DataModel.IndigoContext())
{
var modelTab=context.TabelaPreco.Where(tb=>tb.Id==Id.First();
var modelProd=context.Produto.ToList();
var model=context.TabelaPreco
.Where(t=>t.Id==Id)
.加入(
context.preproduto,
t=>t.Id,
x=>x.TabPrecoId,
(t,x)=>新的{t,x}
)
.加入(
上下文,Produto,
p=>p.x.ProdutoId,
y=>y.Id,
(p,y)=>新的ListProduto
{
produtoId=y.Id,
produto=y.Nome,
precproduto=p.x.preco,
Cor=y.Cor,
塔曼霍=y.塔曼霍
}
)
.ToList();
var ls=new TabProdListModel()
{
tabela=modelTab,
Produtos=modelProd,
TdProdutos=型号
};
var prod=ls.Produtos.ToList();
如果(modelProd.Count()!=0)
foreach(ls.Produtos中的变量项)
{
foreach(ls.TdProdutos中的变量td)
{
if(item.Id==td.produtoId)
{
生产移除(项目);
打破
}
}
}
ls.Produtos=prod;
返回ls;
}
}
公共无效AdicionarProdTab(int Produto、double Valor、int Tabela)
{
使用(var context=new indigo.DataModel.IndigoContext())
{
var produto=context.produto.Where(p=>p.Id==produto.FirstOrDefault();
var tabela=context.TabelaPreco.Where(tp=>tp.Id==tabela.FirstOrDefault();
var precproduto=新的precproduto()
{
preco=勇气,
Produto=Produto,
TabPreco=tabela
};
context.precproduto.Add(precproduto);
SaveChanges();
}
}
public void EditarProdutoTabela(int-ProdutoId,double-valor,int-tabela)
{
使用(var context=new indigo.DataModel.IndigoContext())
public List<PrecoProduto> ObterPrecoPorTabela(int copiarDe)
    {
        var Precos = new List<PrecoProduto>();
        using (var context = new indigo.DataModel.IndigoContext())
        {
            Precos = context.PrecoProduto.Where(pp => pp.TabPrecoId == copiarDe).ToList();
        }
        return Precos;
    }