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>());
を追加する必要が
はい、私はそれについて読んだが、これは落としたり、削除させていただきます古いデータベースを作成して新しいデータベースを作成します。それは問題だ。私は自分のデータを保存したい。 私は解決策を見つけました:CFがデータベースを生成するとき、テーブル名dbo.EdmMetadataがデータベースに作成されます。このテーブルを削除すると、データベースを変更できます。しかし、エンティティとデータベースも手動で再定義する必要があります。それは良い解決策ではないようです。 –
あなたは私のリンクを読んだ。今、EFにはSqlMigrations http://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspxがあります。 –
申し訳ありませんが、私はそれを逃した。 SqlMigrationsをインストールしましたが、update-databaseを実行するとエラーが発生しました。私はあなたの投稿を見つけたhttp://stackoverflow.com/questions/7020928/entity-framework-code-first-sql-migrations-error-could-not-load-type-system-dat。どのように修正しましたか? –