EF 6.0エントリーシリーズ-データベース接続

3642 ワード

前言
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

  1. 对于没有“|DataDirectory|”的连接字符串,数据库文件将会保存在“C:\Users\UserName”文件夹下。
  2. 在Web项目中,默认会创建一个App_Data文件夹,|DataDirectory|默认指向此文件夹。
  3. 可以使用代码修改|DataDirectory|的文件夹路径。
AppDomain.CurrentDomain.SetData(“DataDirectory”, newpath)

接続の構成
App.configまたはWeb.configファイルに接続文字列を設定すると、詳しくは言わないが、WebプロジェクトDemoのほぼ90%にこのような構成項目があるからだ.

  


参考資料
  • データベース接続文字列大全
  • Working with local databases