Array
(
)

MVC e EF - Como chamar método e persistir

Pjava
   - 24 jun 2013

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
   - 24 jun 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

Pjava
   - 24 jun 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

Pjava
   - 25 jun 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.