我尝试使用实体框架和代码优先方法,但由于某种原因它不会为我创建数据库。我想问题出在我的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();
}
我做错了什么?我完全是绿色的。
答案 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
这将启用数据库的迁移,添加第一次迁移并创建数据库。