I'm using ASP.NET MVC 4 - c# to connect to a live database, and list the results, however when I go to view the page it returns the following error:
CREATE TABLE permission denied in database 'DatabaseName'.
Description: An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more
information about the error and where it
originated in the code.
Exception Details: System.Data.SqlClient.SqlException: CREATE TABLE
permission denied in database 'DatabaseName'.
Source Error:
Line 16: public ActionResult Index()
Line 17: {
Line 18: return View(db.AccControls.ToList());
Line 19: }
Line 20
Controller:
namespace TestDBCon.Controllers
{
public class HomeController : Controller
{
private DataDbContext db = new DataDbContext();
public ActionResult Index()
{
return View(db.AccControls.ToList());
}
}
}
AccControl.cs (model)
namespace TestDBCon.Models
{
public class AccControl
{
public int ID { get; set; }
public int ControlCode { get; set; }
public string Nominal { get; set; }
public string CostCentre { get; set; }
public string Department { get; set; }
}
public class DataDbContext : DbContext
{
public DbSet<AccControl> AccControls { get; set; }
}
}
Web.Config:
<add name="DataDbContext" connectionString="Data Source=***;initial catalog=***;integrated security=True;" providerName="System.Data.SqlClient" />
I'm not trying to create a table? I'm just trying to list results so I'm extremely confused. It must be something to do with the MVC?
Any help would be greatly appreciated!
Thanks
Is your web config
pointing to the correct database?
Are the credentials correct?
Entity Framework will create tables in the database if you are going to use the MVC4 WebSecutiy()
to handle the Authentication and Authorisation of users. This could be throwing the exception.
In this case where you cannot create the tables needed for the membership provider, you will need to exclude this from the system. See this here. Alternatively create a new MVC4 project and select empty template and just put in the bits you need.