我必须在使用 WinForms/C#、SQL server 和 EF 4 开发的桌面应用程序上工作。
DAL 已使用 Repository 和 UoW 模式实现。数据仅用于只读目的。您能否介绍如何通过使用来自某些文件、XML 或内存集合中的数据来删除数据库并修改应用程序以使其工作。需要对 DAL 进行一些更改。
请指导如何使用最少的更改来完成。
我必须在使用 WinForms/C#、SQL server 和 EF 4 开发的桌面应用程序上工作。
DAL 已使用 Repository 和 UoW 模式实现。数据仅用于只读目的。您能否介绍如何通过使用来自某些文件、XML 或内存集合中的数据来删除数据库并修改应用程序以使其工作。需要对 DAL 进行一些更改。
请指导如何使用最少的更改来完成。
存储库是一种抽象,因此,您只需要编写另一个实现即可。像这样的东西:
public interface IRepository<T>
{
IQuerable<T> GetEntities();
}
// this works with database
public class SomeEntityDbRepository<SomeEntity> : IRepository<SomeEntity>
{
// ...
public IQuerable<SomeEntity> GetEntities()
{
return dbContext.Set<SomeEntity>();
}
}
// this works with file storage:
public class SomeEntityFileRepository<SomeEntity> : IRepository<SomeEntity>
{
// ...
public IQuerable<SomeEntity> GetEntities()
{
using (var stream = new Filestream(/* ... */))
{
var serializer = /* ... */;
var someEntities = /* ...deserialize from file */
return someEntities.AsQuerable();
}
}
}
然后将此实现提供给 BLL,例如,通过依赖注入。此外,您可以将 DI 容器配置放入 app.config 中,使数据源配置更加灵活。
我终于将我的数据库转换为 SQL Server CE。