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