7

我现在开始学习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 仍然MYEF在默认 SQL Server Express 数据库中创建表。

有没有人成功做到这一点?

4

2 回答 2

14

您应该BlogContext像这样将连接字符串名称传递给您的基本构造函数

public BlogContext()
    : base("TestDBContext")
{
}

http://msdn.microsoft.com/en-us/library/gg679467(v=vs.103).aspx

于 2013-04-29T17:24:47.677 回答
0

EntityFramework 尝试从继承 DbContext 的类的名称推断 web/app.config 文件中的 ConnectionString 的名称。在您的情况下,这是 BlogContext。

如果你只是改变

<connectionStrings><add name="TestDBContext"

<connectionStrings><add name="BlogContext" 

那么您public BlogContext()无需将硬字符串传递给基类即可。

于 2020-04-09T14:51:55.300 回答