2014-12-27 4 views
0

Я пытаюсь сделать простой проект в ASP.NET, 'code first'.Код сперва - база данных не создана

Так что я сделал класс EFDbContext:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 

namespace MVCRubenWouters.Models 
{ 
    public class EFDbContext: DbContext 
    { 
    public EFDbContext() : base("name=rubenwoutersdbCF") 
    { 
     Database.SetInitializer<EFDbContext>(new EFDbInitializer()); 
    } 
     public DbSet<Types> Types { get; set; } 
    } 
} 

И добавил ConnectionString в web.config ''

<connectionStrings> 
    <add name="rubenwoutersdbCF" connectionString="Data Source=.\SQLSERVER2012;Initial Catalog=rubenwoutersdbCF;Integrated Security=True;MultipleActiveResultSets=true" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Затем я создал класс «EFDbInitializer, чтобы добавить что-то к базе данных:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 

namespace MVCRubenWouters.Models 
{ 
    public class EFDbInitializer: DropCreateDatabaseAlways<EFDbContext> 
    { 
    protected override void Seed(EFDbContext context) 
    { 
     Types t1 = new Types() 
     { 
     PK_TypeNr = 1, 
     TypeKeuken = "Belgisch", 
     TypeZaak = "Restaurant", 
     Vegetarisch = false 
     }; 

     context.Types.Add(t1); 
     context.SaveChanges(); 
    } 
    } 
} 

Когда я запускаю проект и перехожу к студию управления SQL-сервером (и обновляется), нет новая база данных есть.

Я делаю что-то неправильно здесь? :/

+0

Вы подключили свою студию Mgmt к экземпляру '. \ SQLSERVER2012' ?? –

+0

@marc_s Да, да. – RW24

+0

Попробуйте сделать вызов структуры сущности, если есть проблема, вы должны получить исключение. Попытайтесь называть это: 'new EFDbContext(). Типы.ToList();' – Dan

ответ

0

Я предлагаю вам создать свою базу данных на SQL-сервере, создать таблицы и заполнить их с помощью кода.

+1

Я думал, что код сначала означает, что вы создаете свою базу данных по коду? (Это школьное задание, так что это должно быть так: /) – RW24

+0

@ user1418016 Вопрос сначала связан с кодом, ваш ответ не имеет никакого смысла. – Calvedos

0

Путь, который работает на моей системе является заставить базу данных в Application_Start()

попробовать это:

Database.SetInitializer(new CreateDatabaseIfNotExists<EFDbContext>()); 
     var context = new EFDbContext("Data Source=(local);Integrated Security=SSPI;Initial Catalog=myDB;"); 
     context.Database.Initialize(true); 

Я думаю, что метод семени никогда не вызывается, обеспечить множество А brakpoint

Вы можете разработать свой пользовательский интерфейс, как показано ниже:

Seed in entity framework и затем называть его Application_Start()

Database.SetInitializer<EFDbContext>(new EFDbInitializer()); 
Смежные вопросы