Recientemente comenzé a estudiar MVC y ahora que llegué al capítulos de la base datos Azure y a probarla con la creación de Controles tuve muchos problemas como los describo a continuación.
Primero intenté obtener una cuenta de Windows Azure, y Microsoft no me permitió en todo mi día libre obtener acceso a la base de datos de prueba.
Cuando intenté creando la base de datos "SistemaPruebas" en mi SQL Server 2014, voy a intento crear el control de el siguiente modo
y Me lanza un error "mvc scaffolding does not support entity framework 6 or later" y supuse que era por la base de datos. Pero fui al internet e investigué y pense que como decian poniendo el framework 5 se solucionaría el problema.
Pues lo instalé por la Package Manager Console y me lanzaba un error de que no reconocía el termino "provider" y tome como referencia un proyecto con una base de datos .mdf , me base en un proyecto que si me funciona e hice estos cambios al web.config del root
<add name="SistemaPruebas" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\SistemaPruebas.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="ApplicationServices" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDBFilename=|DataDirectory|\aspnetdb.mdf" providerName="System.Data.SqlClient" />
Luego me lanzo este error
y fuí y comentarizé la siguiente línea en web.config
<!--<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>-->
No olviden hacer Build cada vez que hagan cambios al web.config
y vuelvan a intentar crear el control
finalmente el resultado es maravilloso
Crea el control con sus metodos
public class PhotoController : Controller
{
private PhotoSharingContext db = new PhotoSharingContext();
//
// GET: /Photo/
public ActionResult Index()
{
return View(db.Photos.ToList());
}
//
// GET: /Photo/Details/5
public ActionResult Details(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// GET: /Photo/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Photo/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Photo photo)
{
if (ModelState.IsValid)
{
db.Photos.Add(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(photo);
}
//
// GET: /Photo/Edit/5
public ActionResult Edit(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// POST: /Photo/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Photo photo)
{
if (ModelState.IsValid)
{
db.Entry(photo).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(photo);
}
//
// GET: /Photo/Delete/5
public ActionResult Delete(int id = 0)
{
Photo photo = db.Photos.Find(id);
if (photo == null)
{
return HttpNotFound();
}
return View(photo);
}
//
// POST: /Photo/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Photo photo = db.Photos.Find(id);
db.Photos.Remove(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
y 5 vistas de la carpeta View/Photo
Create.cshtml
Delete.cshtml
Details.cshtml
Edit.cshtml
Index.cshtml
Todo el código Html <.< todo todo lo crea.
Esta fué mi reseña creando controles con scaffoling y entityframework
Saludos
En otra versión de proyecto:
ResponderBorrarInstalé el Framework 5 desde la consola
Tengo la cadena en el Web.config del rooter
Me salía un error que decía que los Modelos tenían errores de validación que no tenian un Key definido, yo tenía
idFoto y lo cambié a FotoID,
idComentario y lo cambié a ComentarioID,
Build solution...
No fue necesario agregar ni quitar líneas al WebConfig y se solucionó.