エンティティフレームワークへのコードファーストアプローチを試し始めています。主に、ビューに表示するためにプロパティを注釈で装飾できるようにします(そうでない場合は、現在のところ、エンティティフレームワークが生成したアノテーションを追加して、オブジェクト間でデータをコピーできるようにします。
現在、アプリケーションを起動すると、データベースを作成しようとしているように見えます。
エンティティフレームワークにeverデータベースを変更させたくありません。いいえ。試さないでください。データベースを変更するのはそれほど難しいことではありません。自分でやった方がずっと気持ちがいいです。データベースを設計するときに手を握るフレームワークは必要ありません。
データベースを変更しようとするのをやめるようにフレームワークに指示できますか?データベースを変更しようとしているという事実はかなり恐ろしいので、私は今コードファーストを使用することを非常にためらっています。開発中でさえ、私はそれが起こるのを見たくありません。
私は運が悪いですか?
EFでデータベースを作成したくない場合は、データベース初期化子を無効にできます。
public class SchoolDBContext: DbContext
{
public SchoolDBContext() : base("SchoolDBConnectionString")
{
//Disable initializer
Database.SetInitializer<SchoolDBContext>(null);
}
public DbSet<Student> Students { get; set; }
public DbSet<Standard> Standards { get; set; }
}
EFを使用したいが、データベースは変更しない場合は、おそらく最初にコードは必要ありません。あなたはおそらく最初にデータベースのようなものを望みます。
http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx
回答コメントからのリンク:
http://automapper.codeplex.com/
AutoMapper入門
編集:私は目標を誤解しました 次の正しいコードが与えられたこの回答を参照する必要があります:
Database.SetInitializer<MyContext>(null);
イニシャライザであることを宣言するときは、基本クラスを使用します。
public class DatabaseInitialiser : CreateDatabaseIfNotExists<MyContext>
のではなく :
public class DatabaseInitialiser : RecreateDatabaseIfModelChanges<MyContext>
または使用する場合:
Database.SetInitializer<MyContext>(new RecreateDatabaseIfModelChanges<MyContext>);
これを次のように置き換えます:
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>);