Файл базы данных Entity Framework Code First не был создан в APP_DATA, но запросы работают - PullRequest
2 голосов
/ 09 февраля 2012

Мои модели для моего блога:

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 нет файла базы данных ?? Как это так? или что случилось?

Ответы [ 2 ]

5 голосов
/ 09 февраля 2012

Если вы не предоставите строку подключения, EF Code First создаст базу данных с учетными данными пользователя (windows) в локальном экземпляре SQLExpress. Вы можете проверить это, используя SQL Server Management Studio Express и войдя в локальный экземпляр.

2 голосов
/ 09 февраля 2012

Alex,

Строка подключения фактически получается автоматически (т.е. по соглашению) из dbcontext (в вашем случае BlogContext ), поэтому вы обнаружите, что внутри sqlexpress или sqlcompactу вас будет новый БД с именем, которое имеет ваш dbcontext.

удачи.

...