EF 6.0エントリーシリーズ-データベース接続
3642 ワード
前言
Entity Framework(以下、EFと略す)では、既存のデータベースに接続したり、新しいデータベースを作成したりするモデル(コード優先メソッドまたはモデリングツールを使用する)を作成できます.一般に、DbContextを拡張し、派生クラスはベースクラスのインフラストラクチャ関数を呼び出してデータベースに接続する方法を見つけます.Netフレームワークは、DbContextがデータベースをどのように発見するかで明らかになる「構成よりも約束」の原則を使用する傾向にあります.この記事では、いくつかのCode Firstモードでデータベースに接続する方法について説明します.
きていせつぞく
まず最も簡単なDBContextを見てみましょう
上記のコードを使用して、アプリケーションで他の設定が行われていない場合、アプリケーションがDBContextインスタンスを新規作成すると、パラメトリック関数のないDBContext、EFはデフォルトでCode Firstモードで実行され、接続文字列は約束通りに構築されます.この例では、名前空間を含むクラス名である「EFDemoWeb.DemoContext」をデータベース名として使用します.1つの空WEBプロジェクトの中で、最も基本的なWeb.configファイルの内容
NugetはEntity Framework以降のWeb.configファイルの内容を参照
接続の構成
App.configまたはWeb.configファイルに接続文字列を設定すると、詳しくは言わないが、WebプロジェクトDemoのほぼ90%にこのような構成項目があるからだ.
参考資料データベース接続文字列大全 Working with local databases
Entity Framework(以下、EFと略す)では、既存のデータベースに接続したり、新しいデータベースを作成したりするモデル(コード優先メソッドまたはモデリングツールを使用する)を作成できます.一般に、DbContextを拡張し、派生クラスはベースクラスのインフラストラクチャ関数を呼び出してデータベースに接続する方法を見つけます.Netフレームワークは、DbContextがデータベースをどのように発見するかで明らかになる「構成よりも約束」の原則を使用する傾向にあります.この記事では、いくつかのCode Firstモードでデータベースに接続する方法について説明します.
きていせつぞく
まず最も簡単なDBContextを見てみましょう
namespace EFDemoWeb
{
public class DemoContext : DbContext
{
public DbSet Contact { get; set; }
}
public class Contact
{
public int ID { get;set; }
public string Name { get; set; }
public DateTime birthday { get; set; }
public string Phone { get; set; }
}
}
上記のコードを使用して、アプリケーションで他の設定が行われていない場合、アプリケーションがDBContextインスタンスを新規作成すると、パラメトリック関数のないDBContext、EFはデフォルトでCode Firstモードで実行され、接続文字列は約束通りに構築されます.この例では、名前空間を含むクラス名である「EFDemoWeb.DemoContext」をデータベース名として使用します.1つの空WEBプロジェクトの中で、最も基本的なWeb.configファイルの内容
NugetはEntity Framework以降のWeb.configファイルの内容を参照
......
......
EF默认使用Microsoft SQL Server LocalDB作为数据库引擎,可以看到,在config文件中并没有连接字符串出现,数据库文件放在哪儿呢?
根据项目类型不同,VS自动产生的连接字符串会有所不同。
- 控制台项目/Winform/WPF等客户端项目
Data Source=(localdb)\v11.0;AttachDbFilename=EFDemoWeb.DemoContext.mdf;Initial Catalog=EFDemoWeb.DemoContext;Integrated Security=True;MultipleActiveResultSets=True
- Web项目
Data Source=(localdb)\v11.0;AttachDbFilename=|DataDirectory|EFDemoWeb.DemoContext.mdf;Initial Catalog=EFDemoWeb.DemoContext;Integrated Security=True;MultipleActiveResultSets=True
- 对于没有“|DataDirectory|”的连接字符串,数据库文件将会保存在“C:\Users\UserName”文件夹下。
- 在Web项目中,默认会创建一个App_Data文件夹,|DataDirectory|默认指向此文件夹。
- 可以使用代码修改|DataDirectory|的文件夹路径。
AppDomain.CurrentDomain.SetData(“DataDirectory”, newpath)
接続の構成
App.configまたはWeb.configファイルに接続文字列を設定すると、詳しくは言わないが、WebプロジェクトDemoのほぼ90%にこのような構成項目があるからだ.
参考資料