2013-11-15 4 views
1

База данных не создается при запуске моего приложения WPF. Что случилось с моим кодом:WPF MVVM с EF CodeFirst

enter image description here

App.config

<connectionStrings> 
    <add name="JanathaPOSConn" 
    connectionString="Server=.\SQLEXPRESS;Database=JanathaDb;Trusted_Connection=true" 
    providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

ПОКО класс 1:

namespace JanathaPOS.Model 
{ 
    [Table("UserRoles")] 
    public class UserRole 
    { 
     [Key] 
     public string Id { get; set; } 
     [MaxLength(50)] 
     public string Name { get; set; } 
     [MaxLength(50)] 
     public string Description { get; set; } 
    } 
} 

ПОКО класса 2:

namespace JanathaPOS.Model 
{ 
    [Table("Users")] 
    public class User 
    { 
     [Key] 
     public string Id { get; set; } 
     [MaxLength(50)] 
     public string Name { get; set; } 
    } 
} 

Контекст класс:

namespace JanathaPOS.Model 
{ 
    /// <summary> 
    /// 
    /// </summary> 
    class JanathaPosDbContext : DbContext 
    { 
     private static JanathaPosDbContext _context; 

     /// <summary> 
     /// 
     /// </summary> 
     /// <returns></returns> 
     public static JanathaPosDbContext GetContext() 
     { 
      if (_context == null) 
      { 
       _context = new JanathaPosDbContext(); 
      } 
      return _context; 
     } 

     /// <summary> 
     /// 
     /// </summary> 
     public JanathaPosDbContext() : base("JanathaPOSConn") { } 

     /// <summary> 
     /// 
     /// </summary> 
     /// <param name="modelBuilder"></param> 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<UserRole>(); 
      modelBuilder.Entity<User>(); 

      base.OnModelCreating(modelBuilder); 
     } 

     public DbSet<UserRole> UserRoles { get; set; } 
     public DbSet<User> Users { get; set; } 

    } 
} 

XAML:

namespace JanathaPOS 
{ 
    /// <summary> 
    /// Interaction logic for App.xaml 
    /// </summary> 
    public partial class App : Application 
    { 
     protected override void OnStartup(StartupEventArgs e) 
     { 
      Database.SetInitializer(new DropCreateDatabaseIfModelChanges<JanathaPosDbContext>()); 

      base.OnStartup(e); 
     } 
    } 
} 
+0

Вы получаете сообщение об ошибке или исключение? Что это? Вероятно, вы тоже не хотите иметь ни одного контекста для вашего приложения. – Steve

+0

Получение ошибок, исключение не создается, но база данных не создается. – Jobi

+0

Извините! Я новичок в WPF. Не могли бы вы объяснить немного больше? – Jobi

ответ

1

Я не вижу контекст инстанцированный здесь. Вы должны создать контекст и попытаться получить доступ к данным или заставить инициализацию:

using (var ctx = new JanathaPosDbContext()) 
{ 
    // access the data 
    var roles = ctx.UserRoles.ToList();   

    // or force the initialization 
    ctx.Database.Initialize(true); 
} 
+0

Теперь он работает ... Спасибо – Jobi

Смежные вопросы