EF5模型首先使用SQL Server - 使用SQLite

时间:2013-11-27 17:22:02

标签: entity-framework sqlite model repository-pattern dbcontext

我首先使用EF和模型以及SQL Server - 今天我需要能够根据我的代码运行位置切换到SQLite。我想了解我有哪些选择,如果我现在想到的想法是一个选项。

让我给出一些背景知识:我正在使用的当前解决方案是使用EF5并且有几个层,例如:

  • 实体(模型)
  • 存储库
  • 服务层

使用SQL Server,使用.EDMX文件生成(模型优先)我的实体对象。我的项目EFContext包含.EDMXEFContextContainer文件。代码生成发生在Entity项目中(.tt文件在那里)

public partial class EFContextXContainer : DbContext
{
    public DbSet .... 
}

域对象知道EFContextXContainer。我正在使用spring,当调用服务层时,我将IUnitOfWork对象传递给构造函数。 unitofwork对象包含EFContextXContainer对象。

public class RepoUnitOfWork :  EFContextXContainer, IUnitOfWork
{
}

目标IUnitOfWork =>我可以使用SaveChanges方法从服务层提交事务。还应该提供一种切换数据库的方法。

今天是我的担忧。我希望能够处理新的DbContext对象并从存储库层访问SQLite。我希望EF可以使用相同的模型对象为我生成一个新的上下文,但转到SQLite。

因此从春天开始。当我需要使用SQL Server时,我的服务层将使用对象A(包含EFContextXContainer)启动repo层。

<object name="MyUnitOfWork_SQLServ" 
        type="Y.Repository.RepoUnitOfWork,Repository"/>

当它想要使用SQLite时,它将使用另一个包含IUnitOfWork的{​​{1}}实现。

EFContextZContainer

为此,我的存储库层需要能够将<object name="MyUnitOfWork_SQLite" type="Y.Repository.RepoUnitOfWork_Lite,Repository"/> 两个都视为单个对象。我正在考虑创建一个DbContext对象。

  1. 这看起来像一个可靠的架构吗?
  2. 您认为我能够使用使用SQL Server生成的baseContextDB对象生成DbContext(对于SQLite)。
  3. 提前感谢您的意见

0 个答案:

没有答案