我首先使用EF和模型以及SQL Server - 今天我需要能够根据我的代码运行位置切换到SQLite。我想了解我有哪些选择,如果我现在想到的想法是一个选项。
让我给出一些背景知识:我正在使用的当前解决方案是使用EF5并且有几个层,例如:
使用SQL Server,使用.EDMX
文件生成(模型优先)我的实体对象。我的项目EFContext
包含.EDMX
,EFContextContainer
文件。代码生成发生在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
对象。
baseContextDB
对象生成DbContext
(对于SQLite)。提前感谢您的意见