2

私のモデルを働く:Entity FrameworkのコードファーストデータベースファイルはApp_Dataにして作成されていない、まだクエリは、私のブログのために

ここ
namespace AlexPeta_2.Models 
{ 
    public class Article 
    { 
     public int ArticleId { get; set; } 
     public string Title { get; set; } 
     public string Text { get; set; } 
     public char Published { get; set; } 
     public DateTime CreatedDate { get; set; } 
     public char AllowComment { get; set; } 

     public virtual ICollection<Tag> Tags { get; set; } 
     public virtual ICollection<Comment> Comments { get; set; } 
    } 
} 

namespace AlexPeta_2.Models 
{ 
    public class Comment 
    { 
     public int CommentId { get; set; } 
     public string Name { get; set; } 
     public string Email { get; set; } 
     public string HomePage { get; set; } 
     public string Comm { get; set; } 
     public DateTime CreatedDate { get; set; } 
    } 
} 

namespace AlexPeta_2.Models 
{ 
    public class Tag 
    { 
     public int TagId { get; set; } 
     public string TagName { get; set; } 
     public virtual ICollection<Article> Articles { get; set; } 
    } 
} 

は私dbsetsある:ここ

public class BlogContext : DbContext 
{ 
    public DbSet<Article> Articles { get; set; } 
    public DbSet<Tag> Tags { get; set; } 
    public DbSet<Comment> Comments { get; set; } 
} 

は私の初期化子です:

public class BlogInitializer : DropCreateDatabaseIfModelChanges<BlogContext> 
    { 
     protected override void Seed(BlogContext context) 
     { 

      List<Tag> tags = new List<Tag> 
      { 
       new Tag { TagId = 1, TagName = "Javascript" }, 
       new Tag { TagId = 2, TagName = "Bodybuilding" }, 
       new Tag { TagId = 3, TagName = "Uncategorised" }, 
       new Tag { TagId = 4, TagName = "CSS" }, 
       new Tag { TagId = 5, TagName = "HTML/XHTML" }, 
       new Tag { TagId = 6, TagName = "APEX" }, 
       new Tag { TagId = 7, TagName = "PL/SQL" }, 
       new Tag { TagId = 8, TagName = "Personal" }, 
       new Tag { TagId = 9, TagName = "ASP" }, 
       new Tag { TagId = 10, TagName = "MVC" }, 
       new Tag { TagId = 11, TagName = "C#" }, 
       new Tag { TagId = 12, TagName = "Snowboarding" } 
      }; 
      tags.ForEach(t => context.Tags.Add(t)); 
      context.SaveChanges(); 
     } 
    } 

面白いのは、webconfigで接続文字列を使わずにアプリケーションを実行したときに正常に動作し、すべてのタグが表示されますコントローラにはありますが、APP_DATAにデータベースファイルはありませんか?どうしてそんなことができますか?何が起こったのか?

答えて

5

接続文字列を指定しない場合、EFコードファーストはローカルSQLExpressインスタンスにユーザー資格情報(ウィンドウ)を持つデータベースを作成します。 SQL Server Management Studio Expressを使用してローカルインスタンスにログオンすることで、同じことを検証できます。

+0

これが完成しました。 EFにAPP_DATAの下で新しいファイルを作成させるにはどうすればいいですか? –

+1

このチュートリアルではSQLコンパクトで行う方法を示します。 Expressの場合は同じ方法で行いますが、| DataDirectory |を指定するSQL Express接続文字列を使用します。このようにします:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net -mvc-application – tdykstra

2

アレックス、

たconnectionStringが実際に自動的に導出された(あなたのケースBlogContextに)dbcontextから(慣例によりIE)ので、あなたはSQLEXPRESSまたはsqlcompactのいずれかの内側にあなたが持っているだろうということがわかりますdbcontextには新しい名前が付けられます。

幸運。

+0

ジムに感謝します。問題があります。私はVSでServer Explorerペインを使用してデータベース接続を表示していて、BlogContextがそこにもAPP_DATAにも見つからないので、SQL Express Studioをインストールする必要があります。 –

+0

アレックス、心配する必要はありません、それ以上のクエリがあればpingを返してください。 –

+0

あなたはJimmとPrafullaもそうでした。 Expressインスタンスでデータベースの作成を確認することができました。乾杯。 –