未创建ASP.NET MVC实体框架数据库

时间:2018-06-21 19:01:40

标签: c# asp.net-mvc entity-framework

我正在尝试使用Entity Framework在ASP.NET MVC中构建电话簿,但是我的代码未生成数据库:

我有以下课程:

Contact.cs

    public class Contact
    {
        [Key]
        public int id { get; set; }
        public String fName { get; set; }
        public String lName { get; set; }
        public String phoneNumber { get; set; }
        public PhoneType phoneType { get; set; }

    }

PhoneType.cs

    public class PhoneType
    {
        [Key]
        public int id { get; set; }
        public String type { get; set; }

        public ICollection<Contact> Contacts { get; set; } = new List<Contact>();
    }

ContactDbContext.cs

public class ContactDbContext : DbContext
{
    public ContactDbContext() : base("name=ContactDbContextConnectionString")
    {
        Database.SetInitializer<ContactDbContext>(new ContactDbInitializer());
    }
    public DbSet<Contact> Contacts { get; set; }
    public DbSet<PhoneType> PhoneTypes { get; set; }

}

ContactDbInitializer.cs

public class ContactDbInitializer : DropCreateDatabaseAlways<ContactDbContext>
{
    protected override void Seed(ContactDbContext context)
    {
        Contact a = new Contact()
        {
            fName = "Andra",
            lName = "Avram",
            phoneNumber = "604-788-5659"
        };

        a.phoneType.type = "cell";

        context.Contacts.Add(a);
        context.SaveChanges();
        base.Seed(context);
    }
}

在Web.config中,我有以下内容:

<connectionStrings>
<add name="ContactDbContextConnectionString" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=PhonebookDb;Integrated Security=true" providerName="System.Data.SqlClient" />
<add name="DefaultConnection" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=phonebookContext-20180621103305; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|phonebookContext-20180621103305.mdf"
  providerName="System.Data.SqlClient" />

运行应用程序时,未创建数据库文件。

能帮我一下吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我想出了答案。该程序不喜欢我在PhoneType类中使用“类型”。而且我还更改了将数据播种到

的方式
        PhoneType a = new PhoneType()
        {
            phoneType = "cell"
        };

        a.Contacts.Add(new Contact()
        {
            fName = "Andra",
            lName = "Avram",
            phoneNumber = "438-881-5659"
        });

        context.PhoneTypes.Add(a);
        context.SaveChanges();
        base.Seed(context);