1

I've finished building my blog using EF and Code First.

EF was running against my local SQL Express instance, with [DBO] schema.

Now i want to publish the blog, and i have done the following :

  1. Generetade the scripts for the tables and all objects from SQL Express and change [dbo] to my [administrator] schema from my server.
  2. Ran the scripts against the server. No issues, all objects were created an populated just fine.
  3. I have modified Webconfig and added my BlogContext connection string to point to the server not local sql express.
  4. Published the site.

The error i am getting is : Invalid object name 'dbo.Articles'. - where Articles is one of my entities. It resides on my sql server, [Administrator].Articles.

As far as i can tell EF still thinks im using the DBO schema. Although i have added the connection string to point to administrator user.

How can i change the schema that EF thinks it should use?

2 Answers 2

3

EF will use dbo schema if you didn't configure the schema explicitly through data annotations or fluent API.

[Table("MyTable", "MySchema")]
public class MyEntity
{

}

Or

modelBuidler.Entity<MyEntity>().ToTable("MyTable", "MySchema");
Sign up to request clarification or add additional context in comments.

Comments

0

Just for searchers: I am just working with EF5 .NET4.5, and

[Table("MyTable", "MySchema")]

does not work. Even if VS2012 shows there is an overload which takes 2 parameters, on build it gives the error: 'System.ComponentModel.DataAnnotations.Schema.TableAttribute' does not contain a constructor that takes 2 arguments.

But the code mapping works just fine.

1 Comment

Have you tried using [Table("MyTable", Schema="MySchema")]?

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.