如何从另一个 DbContext 初始化种子数据
How to initialize seed data from another DbContext
我的项目有 2 个 DbContext(在 2 个 Entity Framework 项目中):CoreDbContext
和 Module1DbContext
在 CoreDbContext
中,我有 1 个 table 名为 SystemStatus
。那么是否可以将种子数据从Module1DbContext
插入到这个table?我尝试将 CoreDbContext 传递给 Module1DbContext 中的 Seed 方法,但它确实有效。
是的。只需更新其他上下文并执行您需要的操作即可。如果 CoreDbContext 在另一个项目中,您将需要引用它。
protected override void Seed(Module1DbContext context)
{
// get some data from the current context you want to use for seeding
var someItemFromM1 = context.FooBar.FirstOrDefault(fb => fb.Id == myID);
if (someDataFromM1 != null)
{
using (var coreContext = new CoreDbContext())
{
// Using AddOrUpdate which is designed for seeding, but you could just use standard update code
coreContext.SystemStatuses.AddOrUpdate(
ss => ss.Code, // Unique field to check so duplicate not added
new SystemStatus
{
Code = someItemFromM1.Code,
Description = someItemFromM1.Description
});
coreContext.SaveChanges();
}
}
}
我的项目有 2 个 DbContext(在 2 个 Entity Framework 项目中):CoreDbContext
和 Module1DbContext
在 CoreDbContext
中,我有 1 个 table 名为 SystemStatus
。那么是否可以将种子数据从Module1DbContext
插入到这个table?我尝试将 CoreDbContext 传递给 Module1DbContext 中的 Seed 方法,但它确实有效。
是的。只需更新其他上下文并执行您需要的操作即可。如果 CoreDbContext 在另一个项目中,您将需要引用它。
protected override void Seed(Module1DbContext context)
{
// get some data from the current context you want to use for seeding
var someItemFromM1 = context.FooBar.FirstOrDefault(fb => fb.Id == myID);
if (someDataFromM1 != null)
{
using (var coreContext = new CoreDbContext())
{
// Using AddOrUpdate which is designed for seeding, but you could just use standard update code
coreContext.SystemStatuses.AddOrUpdate(
ss => ss.Code, // Unique field to check so duplicate not added
new SystemStatus
{
Code = someItemFromM1.Code,
Description = someItemFromM1.Description
});
coreContext.SaveChanges();
}
}
}