C# EntityFramework.sqlServerCompact和存储库模式MVVM
我有一个WPF应用程序,我使用了MVVM架构,数据库sql server compact 4。 首先是Entityframework.sqlserverCompact数据库,我使用了一种通用存储库模式,如下所示:C# EntityFramework.sqlServerCompact和存储库模式MVVM,c#,wpf,entity-framework,mvvm,sql-server-ce,C#,Wpf,Entity Framework,Mvvm,Sql Server Ce,我有一个WPF应用程序,我使用了MVVM架构,数据库sql server compact 4。 首先是Entityframework.sqlserverCompact数据库,我使用了一种通用存储库模式,如下所示: public interface IRepository: IDisposable { IQueryable<T> All<T>() where T : class; void InsertAsync&
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;
}
公共接口IRepository:IDisposable
{
IQueryable All(),其中T:class;
void InsertAsync(T实体),其中T:class;
任务GetByIdAsync(int-id),其中T:class;
任务EditAsync(T实体),其中T:class;
任务DeleteAsync(T实体),其中T: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();
}
}
公共类TryiTepository:IRepository
{
私有只读MyEntityContext上下文;
公共信托基金()
{
this.context=new MyEntityContext();
}
public IQueryable All(),其中T:class
{
返回此.context.Set();
}
公共空间处置()
{
如果(this.context!=null)this.context.Dispose();
}
public void InsertAsync(T实体),其中T:class
{
this.context.Set().Add(实体);
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();
}
公共类ArticleViewModel:ObjectBase
{
公开只读易读文章;
public ArticleViewModel()
{
第条=新的信托存款();
这是LoadData();
}
私有void LoadCommand()
{
this.EditCommand=新的CustomCommand(this.EditArticle,this.CanEditArticle);
this.SaveCommand=new CustomCommand(this.SaveArticle,this.CanSaveArticle);
this.DeleteCommand=新的CustomCommand(this.DeleteArticle,this.CanDeleteArticle);
}
私有布尔CanSaveArticle(对象obj)
{
返回true;
}
私有void保存项目(对象obj)
{
Article artikel=新物品(){Name=“newarticle”,Color=“Pink”,价格=125.95,Articlenr=15547878,包装中的物品=12};
第条插入同步(artikel);
这是LoadData();
}
当启动SaveArticle
时,一切都正常运行,我在列表(ListView)中看到新文章,但在数据库中看不到。
我做错了什么?
提前谢谢。解决了
请参见以下链接中ErikEJ的答案:
解决了
请参见以下链接中ErikEJ的答案: