8

I'm start to learn EF now. What I want to do is use EF code first create new tables in SQL Azure.

Here is my code:

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")
       {
       }
   }
}

Code behind:

 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>

When I check my SQL Azure DB, no table has been created, EF still create the table MYEF in the default SQL Server Express database.

Has anyone done this successfully?

2 Answers 2

15

You should pass the connection string name to the base constructor of your BlogContext like this

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

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

Sign up to request clarification or add additional context in comments.

1 Comment

Thanksssssss very much~~ You save my life!
0

EntityFramework tries to infer the name of the ConnectionString in the web/app.config file from the name of the class which inherits DbContext. In your case, this is BlogContext.

If you simply changed

<connectionStrings><add name="TestDBContext"

to

<connectionStrings><add name="BlogContext" 

then you could do public BlogContext() without passing a hard string to the base class.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.