Jag har gjort en sajt i ASP.NET MVC3 med EntityFramework 4.1 (magic unicorn edition) CodeFirst och publicerat den på webbhotellet Binero. Vad jag förstår är jag den första att göra det, och det kräver lite pillande att få det att fungera.
Det första problemet är att EF4.1 vill skapa en databas som heter som din DbContext. På Binero heter din databas något med ditt kundnummer först, och du kan inte döpa din DbContext till det. Jag misstänker att det beror på att ett klassnamn måste börja på en bokstav.
Lösningen på detta är att tvinga din DbContext att använda en ConnectionString. Man kan ju tycka att det borde vara en enkel match, och det är det när man vet hur man gör. Det krävdes en del sökande för att hitta lösningen, men här är den:
public MyDbContext() : base(”ConnectionStringName”)
Alltså, det jag gör är att se till att konstruktorn till min 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. Binero stödjer inte detta (och antagligen inga andra webbhotell heller) 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!

Finfin bloggpost Stefan!
Vi har länkat till den i vår FAQ här: http://www.binero.se/support/faq/webbdatabas/aspnet/hur-anvander-jag-aspnet-mvc3-ef-41-codefirst
Stort tack och vänliga hälsningar,
Erik
Binero
Och där blev jag återigen påmind om att jag ska börja utforska ASP.NET. Hur som helst är det en ett bra blogginlägg som säkert kommer hjälpa många framöver.
Det där var grekiska för mig. Fortsätter att hålla min dröm vid liv om att lära mig php istället =)
Kan du ge ett exempel på hur connectionstring;en ska se ut? jag förstår inte riktigt hur man kan sätta metadata utan att ha tillgång till ”.csdl”-, ”.ssdl”-,”.msl”-filerna såsom det anges här: http://msdn.microsoft.com/en-us/library/bb896291.aspx
Tacksam för hjälpen.
// Fredrik
Hej! Nu tänkte jag be om ursäkt för sent svar, men så inser jag själv att ett par timmar faktiskt är ganska snabbt ändå.
Så här ser min connectionstring ut:
connectionString=”Data Source=********.mssql.binero.se; Initial Catalog=********; Persist Security Info=True; User ID=********; Password=********”
Det fungerar alldeles utmärkt så, fast du får ju byta ut alla * mot dina personliga värden. 😉
Ja, det dröjde minsann inte länge =)
Tack för svaret! Ska testa så fort tid ges.
Tack Stefan, riktigt stökigt det där!
Men jag undrar vad som egentligen är best practise som datamodell för MVC3. EF 4.x känns riktigt scary när man håller på. Helt underbart när man är i första utvecklingsskedet om man kör CodeFirst eller ModelFist dvs. Men sen när man skeppat ut det i produktion och går in i förvaltning. Är jäkligt rädd för att man blåser all produktions data, efter ett år eller så om man ändrar schemat. Man kan ju inte scripta ut data varje gång, låter lite hål i huvudet. Vet någon om man ska vara lugn gällande den saken? Spontant känns linqToSQL bättre, synd att utv. avtog där!
Mvh Abbe
Hej Abbe!
Jag rekommenderar verkligen Code First. Är du orolig så kan du ju köra med Code First on Existing Database, läs mer vad Scott Guthrie säger om den saken http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx
Scott Hanselman har skrivit om Migrating Magic Unicorns 0.5, som är enkla PowerShell-script för att uppdatera databasschemat. Läs mer här http://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspx
Endera alternativet är din väg att gå, för det är som du säger, enda alternativet att påverka databasen out of the box är en Drop and Create, vilket ju absolut inte är vad man vill göra live.
Funkar det att implementera detta på aspnet.mdf databasen som finns i mvc3?