Entity Framework 6 Code First to RDS trying to Create Database

amazon-rds c# entity-framework entity-framework-6 sql-server


I have an existing database and also some existing code that I'd like to push to that database using the Entity Framework (v6.0.0.0).

I am having no problem connecting to the DB, and I have examined the context and migrations files, all look good to me.

When I run the Update-Database -Verbose command, I'm getting the following error:

CREATE DATABASE permission denied in database 'master'.

I'm not clear why it's even trying to create a database, b/c one already exists, and I'm specifying the DB in the settings.

Here is my app.config:

<?xml version="1.0" encoding="utf-8"?>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxx" requirePermission="false" />
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
          <parameter value="Server=[xxxxxxxxxx].rds.amazonaws.com,1433;Database=[xxxxxxxxxx];UID=[xxxxxxxxxx];PWD=[xxxxxxxxxx]" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <add name="DataModel" connectionString="Server=[xxxxxxxxxx].rds.amazonaws.com,1433;Database=[xxxxxxxxxx];UID=[xxxxxxxxxx];PWD=[xxxxxxxxxx]"/>

Any reason it would be ignoring my DB name and trying to create a new one from scratch?

5/9/2017 7:39:37 PM

Accepted Answer

So I figured it out...

The solution (in my case at least) was that I had two connection strings in my app.config file.

I had one in the <connectionsStrings> section and another in the <parameters> section (see above).

At one point I even commented out the one in <connectionStrings> because the other one seemed to look more like an Entity Framework version.

As it turns out, I followed the advice I found in a few other answers regarding setting up an empty class in the DbContext file and hard-code it to the name listed in the <connectionStrings> section.

So like this:

public class YourContext : DbContext
        public YourContext() : base("name=DefaultConnection")


        public DbSet<aaaa> Aaaas { get; set; }

After I did that, I got the following error:

The connection string 'DataModel' in the application's configuration file does not contain the required providerName attribute."

So, I changed my connectionStrings to look like this:

    <add name="DataModel" connectionString="Server=[xxxxxxxxxx].rds.amazonaws.com,1433;Database=[xxxxxxxxxx];UID=[xxxxxxxxxx];PWD=[xxxxxxxxxx]" providerName="System.Data.SqlClient" />

And after that, I got the following error:

CREATE TABLE permission denied in database '[xxxxxxxxx]'.

So I went back to the DB and added the db_ddladmin Database Role for the DB in question.

After that, I ran Update-Database and it worked!

Of course, I went back in and removed the db__ddladmin permission and also the View any database server permission.

5/9/2017 8:47:05 PM

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow