EntityFramework.sqlServerCompact 和存储库模式 MVVM

EntityFramework.sqlServerCompact and Repository pattern MVVM

我有一个 WPF 应用程序,我使用了 MVVM 架构,数据库 sql 服务器紧凑 4。 Entityframework.sqlserverCompact 首先是数据库,我使用了如下通用存储库模式:

    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;
     }

实现存储库的class

    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();
           }
        }

// 视图模型

    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) 上看到新文章,但在数据库中看不到。 我究竟做错了什么? 提前致谢。

已解决!

请参阅下面 link 中 ErikEJ 的回答:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/e7f7a713-b0fd-4716-a19d-4421e8be4c88/forcing-db-changes-to-commit-in-sql-ce-?forum=sqlce