0

我必须在使用 WinForms/C#、SQL server 和 EF 4 开发的桌面应用程序上工作。

DAL 已使用 Repository 和 UoW 模式实现。数据仅用于只读目的。您能否介绍如何通过使用来自某些文件、XML 或内存集合中的数据来删除数据库并修改应用程序以使其工作。需要对 DAL 进行一些更改。

请指导如何使用最少的更改来完成。

4

2 回答 2

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 中,使数据源配置更加灵活。

于 2012-09-07T05:26:55.810 回答
0

我终于将我的数据库转换为 SQL Server CE。

于 2012-09-10T23:31:56.890 回答