Если вы выполняли свое приложение ранее, и ваша модель остается прежней, база данных уже существует, и OnModelCreating()
не будет вызван.
Вы можете использовать Database.SetInitializer()
static void Main(string[] args)
{
Database.SetInitializer(
new DropCreateDatabaseIfModelChanges<YourContext>());
//or
Database.SetInitializer(
new DropCreateDatabaseAlways<YourContext>());
//your code
}
Также я заметил, что вы используете FluentAPI и хочу отметить, что вы также можете использовать атрибуты для сопоставлений:
[Table("dfg_Product")]
public class Product
Надеюсь, это поможет.
EDIT:
Вы используете
modelBuilder.Entity<Product>().ToTable("dfg_Product");
и именно поэтому он создал dbo.Product.
Используйте
modelBuilder.Entity<Product>().MapSingleType().ToTable("dfg_Product");
и, пожалуйста, используйте DropCreateDatabaseAlways()
, чтобы вы получили новую базу данных с правильными сопоставлениями.
РЕДАКТИРОВАТЬ 2
Вам не нужна информация метаданных в строке подключения при разработке приложения Code First, поэтому строка подключения должна выглядеть следующим образом:
<add name="DataModelContainer" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=TestDB;integrated security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />