我正在尝试使用UnitOfWork Pattern创建一个存储库,其中包含一个实体框架数据库第一个项目,我可以在将来的解决方案中重用该项目。想要做的是,从另一个项目,以编程方式执行所有表脚本(或指定文件中的脚本)来创建和可能为数据库设定种子。
是否有任何内置工具使用实体框架来执行此操作?或者是将每个脚本命名/硬编码专门运行?或者其他任何方法吗?我首先无法使用数据库找到任何要做的事情,只能先使用代码。
以下是我对上下文的看法:
public class UnitOfWork : IUnitOfWork
{
private DbContext _dbContext;
public UnitOfWork()
{
_dbContext = new DBContext();
InitializeDatabase();
}
//Repositories/savechanges etc.
private void InitializeDatabase()
{
if(!_dbContext.Database.Exists())
{
//Create blank database.
_dbContext.Database.Create();
//Run all table creation scripts here.
//Seed any initial data.
Seed();
}
}
private void Seed()
{
//Seeding scripts.
}
}
提前致谢。
编辑:事实证明我用我发布的初始代码(The Shame)回答了我自己的问题。在DBContext上调用Create()方法实际上会为你运行所有脚本,这是导致它失败的原因。
我会放弃这一点,以避免将来出现与我相同的错误,因为我认为它不适用于数据库第一种方法。