2011-08-15 5 views
0

J'ai essayé d'utiliser CodeFirst récemment et je me demande quelque chose. J'ai utilisé CF pour générer db (MyDB.mdf), puis j'ai supprimé une table (Category) dans SQL Server. Ensuite, lorsque j'ai essayé de recréer une nouvelle table, CF n'a pas généré de nouvelle table dans ma base de données. Voici mon codeCodeFirst générant la base de données

public class Product 
{   
    public int prodID { get; set; }   
    public int catID { get; set; } 
    public string prodName { get; set; }   
    public Double Price { get; set; } 

    public virtual Category Categories { get; set; } 
} 

public class Category 
{   
    public int catID { get; set; } 
    public string catName { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
} 

public class MyDB : DbContext 
{ 
    public DbSet<Product> Products { get; set; } 
    public DbSet<Category> Categories { get; set; } 
} 

Et voici ma chaîne de connexion afin CF peut générer db à mon SQL Server

<add name="MyDB" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Integrated Security=True" providerName="System.Data.SqlClient"/> 

Je n'utilise la base de données SQLCE b/ci ne peut pas ouvrir

Toutes les solutions.

Merci

Répondre

0

vous devez ajouter

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourContext>()); 

la méthode de démarrage de l'application dans votre fichier global.asax EF4 Code First create new table

+0

Oui, je l'ai lu à ce sujet, mais cela diminuera ou supprimer l'ancienne base de données et en créer une nouvelle. C'est un problème. Je veux garder mes données. J'ai trouvé une solution: lorsque CF génère une base de données, il y a un nom de table dbo.EdmMetadata sera créé dans la base de données. Si je supprime ce tableau, je peux changer de base de données. Mais je dois aussi redéfinir les entités et la base de données manuellement. Cela ne semble pas une bonne solution. –

+0

avez-vous lu mon lien. Maintenant, EF a SqlMigrations http://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspx pour ce faire. –

+0

Désolé, j'ai raté ça. J'ai installé SqlMigrations et j'ai eu une erreur lors de l'exécution de la base de données de mise à jour. J'ai trouvé votre message http://stackoverflow.com/questions/7020928/entity-framework-code-first-sql-migrations-error-could-not-load-type-system-dat. Comment l'avez-vous réparé? –

Questions connexes