モデルからデータベースを作成する場合は、最初に空のモデルを選択する必要があります。データベースを作成するその他の手順は次のとおりです。
- 新しい接続を選択
- サーバー名を設定します。インストールした場合は、単に入力します。デフォルトを選択します。あなたも試すことができます(ローカル)
- 新しいデータベース名を設定
- DDL スクリプトを SQL サーバー管理スタジオのクエリ画面にコピーします
- スクリプトを実行してデータベースを作成します
スクリプトを実行すると、最初のテーブルが作成されます。構成ファイルには、コンテナー名として名前が付けられた接続文字列が含まれます。
これで、TT ファイルの例と同様のコード生成に切り替えたい場合は、右クリックしてコード生成を追加できます。エンティティ モデル用の部分クラスと dbcontext 用の 1 つのファイルが作成されます。これに似ています:
using System;
using System.Collections.Generic;
public partial class Contact
{
public int Id { get; set; }
public string Name { get; set; }
}
コンテキストには 1 つのテーブルしかありません。
public partial class PersonModelContainer : DbContext
{
public PersonModelContainer()
: base("name=PersonModelContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Contact> Contacts { get; set; }
}
TT モデルは必要ありません。これらのファイルを直接追加できます。DbContext から継承する 1 つのコンテキスト クラスと、エンティティの種類ごとに 1 つの部分クラス ファイルが必要です。モデルに変更を加えると、EF はそれを検出します。Db 初期化子を定義する必要があります。その Web ページのサンプル デモでは、別のメソッドに初期化子を追加できます。Web プロジェクトの場合、初期開発用にこの init 関数を Global.asax->application_Start に追加します。イニシャライザにはさまざまなオプションがあります。初期開発にはドロップ アンド クリエイトを使用します。
static void InitDbCheck()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PersonModelContainer>());
using (var db = new PersonModelContainer())
{
//accessing a record will trigger to check db.
int recordCount = db.Contacts.Count();
}
}
static void Main(string[] args)
{
using (var db = new PersonModelContainer())
{
// Save some data
db.Contacts.Add(new Contact { Name = "Bob" });
db.Contacts.Add(new Contact { Name = "Ted" });
db.Contacts.Add(new Contact { Name = "Jane" });
db.SaveChanges();
// Use LINQ to access data
var people = from p in db.Contacts
orderby p.Name
select p;
Console.WriteLine("All People:");
foreach (var person in people)
{
Console.WriteLine("- {0}", person.Name);
}
// Change someones name
db.Contacts.First().Name = "Janet";
db.SaveChanges();
}
}