Duvida entity framework asp mvc
Boa Pessoal, estou participando dos cursos asp mvc enty e estou com varias duvidas, devido as varias formas que o entity se comporta
Criei um projeto na seguinte forma
1- new projeto mvc, fui no console packege manage e Install-Packege Entity-Framework
2-na sequencia comando Enable-Migrations
3- crie dentro do models 3 class usuario,cliente,funcionario,
segue abaixo descricao com parametros das classes
[Table("Usuario")]
public abstract class Usuario
{
[Key]
public int Id_User { get; set; }
[Required(ErrorMessage = "O nome do usuário é obrigatório", AllowEmptyStrings = false)]
public string Nome { get; set; }
[Required(ErrorMessage = "E-mail deve ser preenchido")]
[RegularExpression(@"\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", ErrorMessage = "E-mail em formato inválido")]
[Display(Name = "E-mail")]
public string Email { get; set; }
public string Cpf { get; set; }
public string Senha { get; set; }
}
[Table("Cliente")]
public class Cliente : Usuario
{
public string Telefone { get; set; }
[Display(Name = "Endereço")]
public string Endereco { get; set; }
[Display(Name = "Data Nascimento")]
[DisplayFormat(DataFormatString = "mm/dd/yyyy")]
public string DataNasc { get; set; }
public virtual ICollection<Usuario> Usuario { get; set; }
}
[Table("Funcionario")]
public class Funcionario : Usuario
{
[Key]
public int Id_func { get; set; }
public string Cargo { get; set; }
public virtual ICollection<Usuario> Usuario { get; set; }
}
Bom depois das tabelas criadas no console digitei
Add-Migrations Usuario
Update-Database
fui no projeto e de rebuild
Verifiquei no banco AS tabelas no banco foram criadas
Agora vou montar os controllers
add controller Clientes
resulta ok criou as view executei o projeto rodou beleza
vei com as propriedades do usuario e do cliete na tela obedescendo a herança
alualizei a na linha de comando
Update-Dabase
vou criar o controle dos fucnionarios ai nao funciona da erro
olha o controler do funcionario com os erros
public class FuncionariosController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: Funcionarios
public ActionResult Index()
{
return View(db.Usuarios.ToList());
}
// GET: Funcionarios/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Funcionario funcionario = db.Usuarios.Find(id);
if (funcionario == null)
{
return HttpNotFound();
}
return View(funcionario);
}
// GET: Funcionarios/Create
public ActionResult Create()
{
return View();
}
// POST: Funcionarios/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id_User,Nome,Email,Cpf,Senha,Id_func,Cargo")] Funcionario funcionario)
{
if (ModelState.IsValid)
{
db.Usuarios.Add(funcionario);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(funcionario);
}
// GET: Funcionarios/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Funcionario funcionario = db.Usuarios.Find(id);
if (funcionario == null)
{
return HttpNotFound();
}
return View(funcionario);
}
// POST: Funcionarios/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id_User,Nome,Email,Cpf,Senha,Id_func,Cargo")] Funcionario funcionario)
{
if (ModelState.IsValid)
{
db.Entry(funcionario).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(funcionario);
}
// GET: Funcionarios/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Funcionario funcionario = db.Usuarios.Find(id);
if (funcionario == null)
{
return HttpNotFound();
}
return View(funcionario);
}
// POST: Funcionarios/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Funcionario funcionario = db.Usuarios.Find(id);
db.Usuarios.Remove(funcionario);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}
Pessoal sou novo, me descupem se for um erro bobo ,mas se alguem poder me orientar, pos vejo que o entity e abordado de varias formas, cada um faz de um jeito
Criei um projeto na seguinte forma
1- new projeto mvc, fui no console packege manage e Install-Packege Entity-Framework
2-na sequencia comando Enable-Migrations
3- crie dentro do models 3 class usuario,cliente,funcionario,
segue abaixo descricao com parametros das classes
[Table("Usuario")]
public abstract class Usuario
{
[Key]
public int Id_User { get; set; }
[Required(ErrorMessage = "O nome do usuário é obrigatório", AllowEmptyStrings = false)]
public string Nome { get; set; }
[Required(ErrorMessage = "E-mail deve ser preenchido")]
[RegularExpression(@"\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", ErrorMessage = "E-mail em formato inválido")]
[Display(Name = "E-mail")]
public string Email { get; set; }
public string Cpf { get; set; }
public string Senha { get; set; }
}
[Table("Cliente")]
public class Cliente : Usuario
{
public string Telefone { get; set; }
[Display(Name = "Endereço")]
public string Endereco { get; set; }
[Display(Name = "Data Nascimento")]
[DisplayFormat(DataFormatString = "mm/dd/yyyy")]
public string DataNasc { get; set; }
public virtual ICollection<Usuario> Usuario { get; set; }
}
[Table("Funcionario")]
public class Funcionario : Usuario
{
[Key]
public int Id_func { get; set; }
public string Cargo { get; set; }
public virtual ICollection<Usuario> Usuario { get; set; }
}
Bom depois das tabelas criadas no console digitei
Add-Migrations Usuario
Update-Database
fui no projeto e de rebuild
Verifiquei no banco AS tabelas no banco foram criadas
Agora vou montar os controllers
add controller Clientes
resulta ok criou as view executei o projeto rodou beleza
vei com as propriedades do usuario e do cliete na tela obedescendo a herança
alualizei a na linha de comando
Update-Dabase
vou criar o controle dos fucnionarios ai nao funciona da erro
olha o controler do funcionario com os erros
public class FuncionariosController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: Funcionarios
public ActionResult Index()
{
return View(db.Usuarios.ToList());
}
// GET: Funcionarios/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Funcionario funcionario = db.Usuarios.Find(id);
if (funcionario == null)
{
return HttpNotFound();
}
return View(funcionario);
}
// GET: Funcionarios/Create
public ActionResult Create()
{
return View();
}
// POST: Funcionarios/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id_User,Nome,Email,Cpf,Senha,Id_func,Cargo")] Funcionario funcionario)
{
if (ModelState.IsValid)
{
db.Usuarios.Add(funcionario);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(funcionario);
}
// GET: Funcionarios/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Funcionario funcionario = db.Usuarios.Find(id);
if (funcionario == null)
{
return HttpNotFound();
}
return View(funcionario);
}
// POST: Funcionarios/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id_User,Nome,Email,Cpf,Senha,Id_func,Cargo")] Funcionario funcionario)
{
if (ModelState.IsValid)
{
db.Entry(funcionario).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(funcionario);
}
// GET: Funcionarios/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Funcionario funcionario = db.Usuarios.Find(id);
if (funcionario == null)
{
return HttpNotFound();
}
return View(funcionario);
}
// POST: Funcionarios/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Funcionario funcionario = db.Usuarios.Find(id);
db.Usuarios.Remove(funcionario);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}
Pessoal sou novo, me descupem se for um erro bobo ,mas se alguem poder me orientar, pos vejo que o entity e abordado de varias formas, cada um faz de um jeito
Miguel Filho
Curtidas 0