实体框架app.config配置不会创建数据库

时间:2017-11-30 12:28:38

标签: c# database entity-framework

我尝试使用实体框架和代码优先方法,但由于某种原因它不会为我创建数据库。我想问题出在我的app.config配置文件中。我之前从未使用过实体框架。我已经在stackoverflow上阅读了类似的帖子,但是我无法解决我的问题。我在编译期间没有遇到任何错误,但是当我打开microsoft sql server时,我没有看到我的数据库被创建。

这是我的app.config文件。我在网上找到了这个代码,但我不知道应该在Database属性中写什么。

<configuration>
  <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <appSettings>
    <add key="ipadress" value="127.0.0.1" />
    <add key="port" value="14000" />
  </appSettings>

  <connectionStrings>
    <add name="AVLdataContext" connectionString="Server=.\SQLEXPRESS;Database=Blogging;Integrated Security=True;"  providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

这也是我的模特课:

namespace TCPserver
{
    public class DataBaseModel
    {
        public static string LoadToDatabase(byte[] arr, string imei)
        {
            return ReversedBinaryReader.LoadToDatabase(arr, imei);
        }
    }

    public class AVLdataContext : DbContext
    {
        public DbSet<Datas> Data { get; set; }
        public DbSet<GPSelement> GPSelement { get; set; }
        public DbSet<IOelement> IOelement { get; set; }
    }
}

这是我的控制器:

using (var db = new AVLdataContext())
{
    db.Data.Add(data);
    db.GPSelement.Add(data.Gps);
    db.IOelement.Add(data.Io);
    db.SaveChanges();
}

我做错了什么?我完全是绿色的。

2 个答案:

答案 0 :(得分:2)

您需要更新AVLdataContext以包含带有连接字符串的构造函数调用base()

public class AVLdataContext : DbContext
{
    public AVLdataContext ()
        : base("AVLdataContext")
    {

    }

    public DbSet<Datas> Data { get; set; }
    public DbSet<GPSelement> GPSelement { get; set; }
    public DbSet<IOelement> IOelement { get; set; }
}

如果没有这个,EF无法知道数据库的位置。

同时查看this

答案 1 :(得分:0)

尝试打开包管理器控制台并编写以下命令:

Enable-Migrations
Add-Migration initial
Update-Database

这将启用数据库的迁移,添加第一次迁移并创建数据库。