1

EF の仕組みを理解するために、これら 2 つのチュートリアルに従っています。
http://msdn.microsoft.com/en-us/data/jj193542
http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4 .aspx

これら 2 つのチュートリアルには違いがあります。最初のチュートリアルではWeb.config、EF で新しい DB を作成するために connectionString を作成する必要はないと書かれていますが、Scott Gu のチュートリアルでは作成する必要があると書かれています。

私は最初のもので成功しました:

namespace LearnDB.Models
{
    public class Person
    {
        [Key]
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

namespace LearnDB.DAL
{
    public class DBAccess : DbContext
    {
        public DbSet<Person> Persons { get; set; }
    }
}

namespace LearnDB.Controllers
{
    public class HomeController : Controller
    {
        public string Index()
        {
            var db = new DBAccess();
            var p = new Person { Name = "A", Age = 1 };
            db.Persons.Add(p);
            db.SaveChanges();
            foreach (var per in db.Persons)
            {
                return per.Name;
            }
            return "hi";
        }
    }
}

このプログラムは正常に実行されます。
しかし、私は疑問に思っています:
1. connectionStrings を追加しなくてもプログラムが成功するのはなぜですか?
<add name="DBAccess" ....../>を追加する必要があると思いました。必要ないのに、なぜ Scott Gu は私がそれを追加すべきだと言ったのですか?
2. データベースの自動作成を正確にトリガーするものは何ですか? 私が試したことから、DBはDbContextのコンパイルまたは作成では作成されませんが、追加されるデータのみで作成されます。これは正しいです?

4

1 に答える 1

2

Entity Framework には、オーバーライドまたは指定しない限り、既定で多くのことを行う規則があります。これには、データベースを作成するかどうか、作成を試みる場所、DBContext に入れたクラスをどのように解釈するかなど、すべてが含まれます。

あなたは何もしなかったので、あなたが提供した最初のリンクに答えがありました: http://msdn.microsoft.com/en-us/data/jj193542

下に移動します: 「私のデータはどこですか?」

必要な設定を上書きまたは定義するために何もしなかったため、EF はデータベースを作成しようとします (データベースが存在しない場合)。SQLExpress がインストールされている場合はそれを使用しようとしますが、インストールされていない場合は LocalDB を使用しようとします (これは、開発者が開発フットプリントを最小限に抑えるのに非常に適した、より軽量な新しいバージョンです)。

Scott Guthrie の記事は、さらに別の規則を指摘しています。データベースの接続文字列として、DBContext クラスと同じ名前の特定の接続文字列を使用します。

ただし、それを提供しない場合 (提供しなかった場合) は、最初の記事に戻り、作成した新しいデータベースに (SQLExpress または LocalDB のいずれかで) 名前を付けると彼らは言っています。派生コンテキストの修飾名".

基本的に、あなたが行ったことは、何かを始めるために必要な最小限の量です。それは悪いことではありません。それは、すべての慣習が何であるかが不思議である可能性が高いことを意味します. 構成よりも慣例は素晴らしい概念ですが、設定されている設定が何であるかさえ知らないと、間違いなく気が遠くなります!

于 2013-07-23T20:02:21.337 に答える