c# - MVC 4 entity framework Not picking up database from SQL server -
i running sql server express 2008 r2 database , sql authentication. have added database connnection server explorer , added connection string web.config file. when debug application seems creating default database e.g. tutorial.mvc etc., instead of picking database created prior creating app.
also getting compilation error: {"invalid object name 'dbo.products'."} should occur because sql is:
{select [extent1].[productid] [productid], [extent1].[productname] [productname], [extent1].[productprice] [productprice] [dbo].[products] [extent1]} there exists no table called products. must have been generated entity framework database. have deleted because products model class originially products database table called product (human error) failing update sql. want controller map correct database. suspect isn't picking database connectionstring. although connection string being picked storecontext when debugging. seems not picking database. can see why web.config
<configuration> <connectionstrings> <add name="storecontext" connectionstring="data source=admin-pc\sqlexpress;initial catalog=test;integrated security=true;user id=login;password=***********" providername="system.data.sqlclient" /> </connectionstrings> global.asax
public class mvcapplication : system.web.httpapplication { protected void application_start() { database.setinitializer<tutorial.models.storecontext>(null); arearegistration.registerallareas(); webapiconfig.register(globalconfiguration.configuration); filterconfig.registerglobalfilters(globalfilters.filters); routeconfig.registerroutes(routetable.routes); } } product controller
public class productcontroller : controller { storecontext hello = new storecontext(); // // get: /product/ public actionresult index() { var product = hello.product.tolist(); return view(product); } } product model:
{ [table("product")] public class product { public int productid { get; set; } public string productname { get; set; } public double productprice { get; set; } } } storecontext:
public class storecontext: dbcontext { public dbset<product> product { get; set; } }
have set correct databaseinitializer in project?
idatabaseinitializer contains 4 derived types can use: createdatabaseifnotexists, dropcreatedatabasealways, dropcreatedatabaseifmodelchanges , migratedatabasetolatestversion
choose initializer fit needs , derive it.
next, on constructor of context, set initializer:
public context() : base("connectionstring") { database.setinitializer(new migrationsdatabaseinitializer()); } migrationsdatabaseinitializer derived class migratedatabasetolatestversion.
maybe project recriating database on , over.
you can disable pluralization convention. override onmodelcreation , remove pluralization convention:
protected override void onmodelcreating(dbmodelbuilder modelbuilder) { modelbuilder.conventions.remove<pluralizingtablenameconvention>(); base.onmodelcreating(modelbuilder); } hope helps! :)
Comments
Post a Comment