我现在开始学习EF。我想做的是先使用EF代码在SQL Azure中创建新表。
这是我的代码:
namespace WebApplication2
{
public class Blog
{
public int UserName { get; set; }
public int ID { get; set; }
}
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public BlogContext() : base("MYEF")
{
}
}
}
后面的代码:
protected void Page_Load(object sender, EventArgs e)
{
using (var db = new BlogContext())
{
var blog = new Blog { UserName = 456 };
db.Blogs.Add(blog);
db.SaveChanges();
}
}
Web.config
:
<connectionStrings>
<add name="TestDBContext"
connectionString="Server=tcp:mydb.database.windows.net,1433;Database=MYEF;User ID=[Username];Password=[MyPassword];Trusted_Connection=False;Encrypt=True;PersistSecurityInfo=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
当我检查我的SQL Azure DB时,尚未创建任何表,EF仍在默认SQL Server Express数据库中创建表MYEF
。
有人成功做到了吗?
您应该像这样将连接字符串名称传递给BlogContext
的基本构造函数
public BlogContext()
: base("TestDBContext")
{
}
http://msdn.microsoft.com/en-us/library/gg679467(v=vs.103).aspx
EntityFramework尝试从继承DbContext的类的名称推断web / app.config文件中的ConnectionString的名称。您的情况是BlogContext。
如果您简单地更改了
<connectionStrings><add name="TestDBContext"
到
<connectionStrings><add name="BlogContext"
然后您可以在不将硬字符串传递给基类的情况下执行public BlogContext()
。