2016-09-04 4 views
1

У меня есть приложение WPF, я использовал MVVM архитектуру базы данных SQL Server Compact первая 4. База данных Entityframework.sqlserverCompact, и я использовал общий шаблон репозитория следующим образом:EntityFramework.sqlServerCompact и Repository паттерн MVVM

public interface IRepository: IDisposable 
    { 
      IQueryable<T> All<T>() where T : class; 
      void InsertAsync<T>(T entity) where T: class ; 
      Task<T> GetByIdAsync<T>(int id) where T: class ; 
      Task EditAsync<T>(T entity) where T : class; 
      Task DeleteAsync<T>(T entity) where T : class; 
    } 

класс, реализующий Repository

public class TryitRepository : IRepository 
     {  
     private readonly MyEntityContext context; 
     public TryitRepository() 
      { 
       this.context = new MyEntityContext(); 
      } 
     public IQueryable<T> All<T>() where T : class 
      { 
       return this.context.Set<T>(); 
      } 
     public void Dispose() 
      { 
      if (this.context != null) this.context.Dispose(); 
      }   
     public void InsertAsync<T>(T entity) where T : class 
      { 
      this.context.Set<T>().Add(entity); 
      this.context.SaveChanges(); 
      } 
     } 

// ViewModel

public class ArticleViewModel : ObjectBase 
     { 
      public readonly IRepository article; 

      public ArticleViewModel() 
      {    
       article = new TryitRepository(); 
       this.LoadData(); 
      } 

      private void LoadCommand() 
      { 
       this.EditCommand = new CustomCommand(this.EditArticle, this.CanEditArticle); 
       this.SaveCommand= new CustomCommand(this.SaveArticle, this.CanSaveArticle); 
       this.DeleteCommand = new CustomCommand(this.DeleteArticle, this.CanDeleteArticle);   
      } 

      private bool CanSaveArticle(object obj) 
      { 
       return true; 
      } 
      private void SaveArticle(object obj) 
      {   
       Article artikel = new Article() { Name = "newarticle", Color = "Pink", Price = 125.95, Articlenr = 15547878, Items_In_Package= 12 }; 
       article.InsertAsync<Article>(artikel); 

       this.LoadData(); 
      } 

Когда SaveArticle уволен, все работает хорошо, я вижу новую статью в списке (ListView), но не в базе данных. что я делаю неправильно? Спасибо заранее.

ответ