我正在尝试创建一个WPF应用程序,该应用程序通过某些实体数据模型与简单数据库建立连接。我可以从数据库中读取所有内容,但如果我编辑或删除任何内容,它只会更改应用程序中的数据,而不会更改数据库中的数据。 第二次运行应用程序时,即使我在运行应用程序时第一次添加内容,数据库也是空的。 你能告诉我我做错了吗?
这是我使用数据库的类:
public partial class MainWindow : Window
{
private Database db;
private DatabaseContext _dbcontext = new DatabaseContext();
public MainWindow()
{
InitializeComponent();
db = new Database(_dbcontext);
IQueryable<Person> item = (IQueryable<Person>)db.People.GetAll();
Person p = new Person()
{
ID = 1,
Name = "Milos"
};
db.People.Add(p);
db.save();
}
}
数据库如下所示:
public class Database
{
private DatabaseContext _DatabaseContext;
public Database(DatabaseContext _Databasecontext1)
{
_DatabaseContext = _Databasecontext1;
}
public IRepository<Person> People
{
get { return new Repository<Person>(_DatabaseContext); }
}
public void save()
{
int rows = _DatabaseContext.SaveChanges();
}
}
和存储库:
public class Repository<T> : IRepository<T> where T : class
{
protected DatabaseContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public Repository(DatabaseContext dbContext)
{
if (dbContext == null) throw new NullReferenceException("dbContext");
DbContext = dbContext;
DbSet = dbContext.Set<T>();
}
public IQueryable GetAll()
{
return DbSet;
}
public T GetById(int id)
{
return DbSet.Find(id);
}
public void Add(T entity)
{
DbSet.Add(entity);
}
public void Update(T entity, int id)
{
var entry = DbContext.Entry(entity);
var currententry = GetById(id);
DbContext.Entry(currententry).CurrentValues.SetValues(entity);
}
public void Delete(T entity)
{
var entry = DbContext.Entry(entity);
DbSet.Attach(entity);
entry.State = EntityState.Deleted;
}
public void Delete(int id)
{
var entity = GetById(id);
if (entity == null) return;
Delete(entity);
}
}