MVC e EF - Como chamar método e persistir
Tenho uma aplicação de testes e criei um View create e no controller Home, coloquei meu código no ActionResult Create. Bem, o que passa é que eu não consigo pegar na minha Models(já criei uma classe para persistência) essa classe de persistência com seus devidos métodos e gravar no BD. Estou pesquisando na net, mas se alguém puder me ajudar, agradeço desde então.
Pjava
Curtidas 0
Respostas
Pjava
24/06/2013
Pesquisei e encotrei isso, mas comigo dá erro. Abaixo minha classe de contexto
public class FuncContexto: DbContext
{
public DbSet<Funcionario> funcionarios { get; set; }
public DbSet<Estado> estados { get; set; }
}
e minha controller
public class HomeController : Controller
{
FuncContexto fcontex = new FuncContexto();
public ActionResult Index()
{
return View(fcontex.funcionarios.ToList());
}
[HttpPost]
public ActionResult Create(Funcionario _func)
{
try
{
if(!ModelState.IsValid)
return View();
fcontex.funcionarios.Add(_func);==> Aqui dá o erro
fcontex.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
public ActionResult Create()
{
return View(new Funcionario());
}
...
Abaixo os erros
Argument 1: cannot convert from 'Teste.Funcionario' to 'Teste.Models.Funcionario'
e esse
The best overloaded method match for 'System.Data.Entity.DbSet<Teste.Models.Funcionario>.Add(Teste.Models.Funcionario)' has some invalid arguments
public class FuncContexto: DbContext
{
public DbSet<Funcionario> funcionarios { get; set; }
public DbSet<Estado> estados { get; set; }
}
e minha controller
public class HomeController : Controller
{
FuncContexto fcontex = new FuncContexto();
public ActionResult Index()
{
return View(fcontex.funcionarios.ToList());
}
[HttpPost]
public ActionResult Create(Funcionario _func)
{
try
{
if(!ModelState.IsValid)
return View();
fcontex.funcionarios.Add(_func);==> Aqui dá o erro
fcontex.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
public ActionResult Create()
{
return View(new Funcionario());
}
...
Abaixo os erros
Argument 1: cannot convert from 'Teste.Funcionario' to 'Teste.Models.Funcionario'
e esse
The best overloaded method match for 'System.Data.Entity.DbSet<Teste.Models.Funcionario>.Add(Teste.Models.Funcionario)' has some invalid arguments
GOSTEI 0
Pjava
24/06/2013
Descobri, depois de tanto bater a cabeça. É que no meu projeto havia um arquivo edmx e criei uma classe com o mesmo nome de uma entidade, por isso o erro, pois ele não sabia que entidade usar, se do edmx ou da classe. Removi o edmx e agora não deu erro, mas também não grava no BD. Não dá erro, mas não grava pelo código que eu fiz copiando da net, nesse link
http://weblogs.asp.net/andrebaltieri/archive/2011/01/18/criando-uma-aplica-231-227-o-asp-net-mvc-com-ef-code-first-development.aspx
http://weblogs.asp.net/andrebaltieri/archive/2011/01/18/criando-uma-aplica-231-227-o-asp-net-mvc-com-ef-code-first-development.aspx
GOSTEI 0
Pjava
24/06/2013
Eu removi o edmx apenas para testar o erro. Já refiz o edmx e renomeei a classe. Ainda não consegui. Fiquei até tarde da noite e como não havia conseguido nada, estou agora pela manhã recomeçando. Fiz exatamente conforme o link passado. Uso VS2012 e MVC 4.
GOSTEI 0