Je viens de commencer à essayer le code EF4 ce matin et j'ai créé mes classes POCO, contexte de données et initialisation dans une bibliothèque de classe séparée, je crois que c'est le code type de plaque de chaudière. Je référence la classe dans une application MVC3 et définissez l'initialiseur dans Global.asax. Sur l'exécution de l'application, je remarque les problèmes suivants
1. Aucune base de données n'est créée nulle part (Ensuite, je ajoute une entrée dans le web.config pour une chaîne de connexion nommée après la classe Context, toujours aucun résultat)
2. Quand je essayer d'accéder aux valeurs initalized, j'obtiens une erreur nulle, évidemment parce qu'il n'y a pas de données.Entity Framework Code Première classe
Quelqu'un peut-il me aider avec s'il vous plaît conseils sur la façon d'obtenir thi chose à travailler (serait dommage si je passais tout mon apprentissage le jour de Noël et je ne peux toujours pas faire fonctionner :() Merci
ps J'ai essayé d'insérer des points de rupture et je frappe la méthode d'initialisation de l'application, mais il frappe jamais la méthode des semences dans le initialiseur même si j'ajouter un point de rupture là aussi !!
Merci.
Initializer classe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using F2AController.Models;
namespace F2AController.DataObjects
{
public class F2AInitializer : DropCreateDatabaseAlways<F2AContext>
{
protected override void Seed(F2AContext context)
{
var countries = new List<Country>
{
new Country(){ CountryName="Germany", Active = true},
new Country(){ CountryName="Britain", Active = true}
};
countries.ForEach(s => context.Countries.Add(s));
context.SaveChanges();
var providers = new List<Providers>()
{
new Providers(){ ProviderName="InfoBip", ContactDetails="Rturo Manovic", Active=true, MessageRates= new List<ProviderRates>(){new ProviderRates(){ CountryId=1, DateCreated=DateTime.Now, DateModified=DateTime.Now, Rate=0.05M, Active=true}}}
};
providers.ForEach(p => context.Providers.Add(p));
context.SaveChanges();
var usermobiles = new List<MobileTerminal>()
{
new MobileTerminal(){ Active= true, Credits=200, DateCreated=DateTime.Now, MSISDN="4477565444865"}
};
usermobiles.ForEach(u => context.MobileTerminals.Add(u));
context.SaveChanges();
}
}
}
Context Classe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
namespace F2AController.Models
{
public class F2AContext : DbContext
{
public DbSet<Country> Countries;
public DbSet<MobileTerminal> MobileTerminals;
public DbSet<Providers> Providers;
public DbSet<ProviderRates> ProviderRates;
public DbSet<Property> Properties;
public DbSet<ShortMessage> ShortMessages;
public DbSet<UserProperties> UserProperties;
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
}
Global.asax méthode d'initialisation App
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
Database.DefaultConnectionFactory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["F2AContext"].ConnectionString);
Database.SetInitializer<F2AContext>(new F2AInitializer());
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
Pourquoi ne pas publier la classe d'initialisation? ou au moins la classe de contexte. – LueTm