实体框架不创建数据库或表

时间:2017-06-15 18:55:22

标签: c# sql-server entity-framework

  • 尝试使用Microsoft SQL Server管理服务器首先创建数据库。我无法使用我当前的凭据,因为创建新数据库导致错误。这是通过使用我的管理员凭据解决的。
  • 将应用程序作为空白项目启动,但使用的是Web表单。
  • 应用程序启动中没有任何内容表明Entity会创建数据库。
  • 已验证SQL Express正在运行。

    • 在VS中,我能够连接到服务器并在SQL Server对象资源管理器中查看我的数据库,但是查看服务器资源管理器将显示我的连接名称,数据库将具有红色x。
    • 在服务器资源管理器下的VS中,我可以在服务器名称下键入。\ SQLEXPRESS并查看系统数据库,但在“连接到数据库”下我看不到我的cfsEnergy数据库>选择或输入数据库名称。
  • 使用Visual Studio 2015

  • 尝试使用以下脚本将我的用户名和管理员帐户添加到我认为的SQL Express组:https://gist.githubusercontent.com/wadewegner/1677788/raw/16862d429feaa5d2d799533c548632365a2f04ff/addselftosqlsysadmin.cmd

/App_code/departments.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace cfsEnergyManagement.App_Code
{
    public class department
    {
        public string ID { get; set; }
        public string title { get; set; }
        public List<utilityUse> utilityUse { get; set;  }
    }
}

/App_code/utilityUse.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace cfsEnergyManagement.App_Code
{
    public class utilityUse
    {
        public string utilityID { get; set; }
        public string title { get; set; }
        public string year { get; set; }
        public string month { get; set; }
        public int kiloWattHour { get; set; }
        public int tonHour { get; set;  }
        public int kiloPoundsHour { get; set; }
        public int netCost { get; set; }
    }
}

/App_Code/dbContext.cs

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

namespace cfsEnergyManagement.App_Code
{
    public class cfsEnergyDb: DbContext
    {
    public DbSet<department> departments { get; set; }
      public DbSet<utilityUse> utilityUses { get; set; }

    }
}

dbContextRun.cs

namespace cfsEnergyManagement.App_Code
{
    public class dbContextRun
    {

        cfsEnergyDb CfsEnergyDb = new cfsEnergyDb();

    }
}

连接字符串:web.config

<connectionStrings>
    <add name="cfsEnergyDb" connectionString="server=SQLEXPRESS;integrated security=SSPI;database=cfsEnergy" providerName="System.Data.SqlClient" />
</connectionStrings>

1 个答案:

答案 0 :(得分:1)

因为您没有实例化 cfsEnergyDb 类。实体框架,仅在您尝试从数据库表(任何数据库查询)首次访问任何数据时创建数据库。因此,尝试从表中访问数据,EF将在数据库中为您创建所有表(在连接字符串中指定)。