Hur använder jag ASP.NET MVC3 och Entity Framework 4.1 CodeFirst
på Binero?
Det första problemet är att EF4.1 vill skapa en databas som
heter som din DbContext. Hos oss heter din databas något med ditt
kundnummer först, och du kan inte döpa din DbContext till det.
Lösningen på detta är att tvinga din DbContext att använda en
ConnectionString. För att göra det så skriv till följande till din
DbContext:
public MyDbContext() : base("ConnectionStringName")
Det vill säga se till att konstruktorn till din DbContext ärver
av sig själv med namnet på din ConnectionString som parameter.
Nästa problem är att EntityFramework CodeFirst vill köra
DropAndCreate på databasen när du förändrar strukturen på dina
klasser. Vi stödjer inte detta och därför måste du få
EntityFramework att istället bara återställa tabellerna. Nu finns
det ingen sådan lösning out-of-the-box, men däremot finns det en
att installera på NuGet.
Med den installerad ser klassen ut så här:
namespace MyProject.Models
{
public class MyDbContext : DbContext
{
public MyDbContext() : base("ConnectionStringName")
{
System.Data.Entity.Database.SetInitializer(new DontDropDbJustCreateTablesIfModelChanged<MyProject.Models.MyDbContext>());
}
public DbSet<MyProject.Models.MyClass> Elephants { get; set; }
}
}
Så enkelt kan det vara när man vet hur man gör. Lycka till!
Tack till Stefan Bergfeldt för informationen