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;
}