我必须使用WinForms / C#,SQL server和EF 4开发的桌面应用程序。
DAL已使用Repository和UoW paterns实现。数据仅用于只读目的。您能否通过使用来自某些文件,XML或内存集合的数据来了解如何删除数据库并修改应用程序以使其工作。 DAL需要一些特色。
请指导如何进行最少的更改。
答案 0 :(得分:2)
存储库是一个抽象,因此,您只需编写另一个实现。像这样:
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,并使数据源配置更加灵活。
答案 1 :(得分:0)
我最终将我的数据库转换为SQL Server CE。