简体   繁体   English

Code First Entity Framework不使用表创建数据库

[英]Code First Entity Framework does not create database with tables

I have Couple of Models (Classes). 我有几个模型(类)。

City.cs: City.cs:

public class City
{
    [ScaffoldColumn(false)]
    public int CityID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Course> Courses { get; set; }
}

Course.cs: Course.cs:

public class Course
{
    [ScaffoldColumn(false)]
    public int ID { get; set; }

    public string Faculty { get; set; }

    public int CityID { get; set; }
}

CourseDatabaseInitializer.cs: CourseDatabaseInitializer.cs:

using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

namespace CoursesApplication.Models
{
    public class CourseDatabaseInitializer : DropCreateDatabaseAlways<CourseContext>
    {
        CourseContext _Context = new CourseContext();
        protected override void Seed(CourseContext context)
        {
            GetCities().ForEach(c => context.Cities.Add(c));
        }

        private static List<City> GetCities()
        {
            var cities = new List<City> {
                new City
                {
                    CityID = 1,
                    Name = "Paris"
                }
            };

            return cities;
        }

        public List<Course> GetCourses()
        {
            return (from c in _Context.Courses select c).ToList();
        }
    }
}

CourseContext.cs: CourseContext.cs:

using System.Data.Entity;

namespace CoursesApplication.Models
{
    public class CourseContext : DbContext
    {
        public CourseContext(): base("CoursesApplication")
        {
        }

        public DbSet<Course> Courses { get; set; }
        public DbSet<City> Cities { get; set; }
    }
}

and my Global.asax.cs file : 和我的Global.asax.cs文件:

void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        // Initialize the Courses database.
        Database.SetInitializer(new CourseDatabaseInitializer());
    }

, but when I run the application, everything is OK. ,但是当我运行该应用程序时,一切正常。 After that in the solution explorer I create connection, but there is no Database with tables. 之后,在解决方案资源管理器中,我创建了连接,但是没有带表的数据库。 This is my web.config with connection string: 这是我的带有连接字符串的web.config

<add name="CourseContext"
    connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\courses.mdf;
Integrated Security=True"providerName="System.Data.SqlClient" />

Where can be the problem ? 问题出在哪里? I am using NET Framework 4.6.1 with Sql Express 2016. This is ASP.NET WEB Forms project. 我将NET Framework 4.6.1与Sql Express 2016一起使用。这是ASP.NET WEB Forms项目。

In CourseContext Try changing this CourseContext尝试更改此

public CourseContext(): base("CoursesApplication")
{
}

to this 对此

public CourseContext(): base("CourseContext")
{
}

or remove : base("CoursesApplication") 或删除: base("CoursesApplication")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM