2011-08-15 6 views
0

最近CodeFirstを使用しようとしましたが、何か不思議です。 CFを使用してdb(MyDB.mdf)を生成した後、SQL Serverでテーブル(カテゴリ)を削除しました。次に、新しいテーブルを再作成しようとすると、CFは自分のデータベースに新しいテーブルを生成しませんでした。ここ は私のコードCodeFirst生成データベース

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; } 
} 

だと、ここでCFが私のSQL Serverのそれ

を開くことができない私はSQLCEデータベースB/CIを使用していない

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

にDBを生成することができますので、私の接続文字列です

すべての解決策。

おかげ

あなたはGlobal.asaxファイルにアプリケーションの起動方法に

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

を追加する必要が

答えて

0
+0

はい、私はそれについて読んだが、これは落としたり、削除させていただきます古いデータベースを作成して新しいデータベースを作成します。それは問題だ。私は自分のデータを保存したい。 私は解決策を見つけました:CFがデータベースを生成するとき、テーブル名dbo.EdmMetadataがデータベースに作成されます。このテーブルを削除すると、データベースを変更できます。しかし、エンティティとデータベースも手動で再定義する必要があります。それは良い解決策ではないようです。 –

+0

あなたは私のリンクを読んだ。今、EFにはSqlMigrations http://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspxがあります。 –

+0

申し訳ありませんが、私はそれを逃した。 SqlMigrationsをインストールしましたが、update-databaseを実行するとエラーが発生しました。私はあなたの投稿を見つけたhttp://stackoverflow.com/questions/7020928/entity-framework-code-first-sql-migrations-error-could-not-load-type-system-dat。どのように修正しましたか? –

関連する問題