Reputation: 964
I have created a windows form application:
I'm using EntityFramework 4.1 with Code First Approach and SQL Compact 4.0 database.
I created a connection string in the app.config file in the class library project used to connect to the database. The problem is that the connection string has apparently no influence on the database creation. I mean that everything is working fine with the program but even if I specify a location for the database this does not have any effect!
Am I writing in the right app.config? Do I need to initialize my DbContext class in a specific way? (today I do not pass any connection string in the constructor)
DbContext class:
public class MyDB : DbContext
{
public DbSet<ContactPerson> ContactPersons { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Quotation> Quotations { get; set; }
public MyDB()
: base("MyDatabase")
{
}
}
App.config connection string:
<add name="MyDatabase" connectionString="Data Source=MyDB.sdf"
providerName="System.Data.SqlServerCE.4.0">
Upvotes: 3
Views: 10336
Reputation: 1532
Have you tried seeding the DB? You have to inject some data so EF creates the DB, if you don't the model definition is just like a statement of intention.
public class ContextInitializer : DropCreateDatabaseIfModelChanges<DBContext>
{
protected override void Seed(DBContext context)
{
context.Add(new Customers()); //add a Customer, for example
}
}
Then look in your Debug/Release folder and check if the DB is created properly.
There is an article by Microsoft explaining all this process in more detail, they have a neew tutorial that replaces the "Magic Unicorn" tutorial, see http://msdn.microsoft.com/en-US/data/jj193542
Upvotes: 0
Reputation: 4209
Your connection string is wrong, it should be this:
add name="MyDB" connectionString="Data Source=MyDB.sdf" providerName="System.Data.SqlServerCE.4.0"
Note that the Name must match the name of your context class for it to auto detect the connection.
Upvotes: 0
Reputation: 41819
You need to put the app.config in the application (.exe) project. The app.config file should look like in this blog post (case sensitive): http://erikej.blogspot.com/2011/04/saving-images-to-sql-server-compact.html and the names should be MyDB, not MyDatabase...
Upvotes: 6