使用DbInitializer将新模型添加到数据库中

时间:2017-10-21 00:48:35

标签: c# entity-framework

我想知道将新模型添加到数据库中并使用正确的值填充它的正确方法是什么,而无需在项目中构建一个全新的View。

我的数据库已经创建,并已通过项目的视图进行了更新。

目前这是DbInitializer

 public class DbInitializer
 {
    public static void Initialize(PlataformaContext context)
    {
        context.Database.EnsureCreated();

        if (context.MachineTypes.Any())
        {
            return; //DB has been seeded
        }

        var familias = new MachineFamily[]
            {
                new MachineFamily{FamilyDescription="Cama Saltarina"},
                new MachineFamily{FamilyDescription="Hockey"},
                new MachineFamily{FamilyDescription="Kiddie"},
                new MachineFamily{FamilyDescription="Mini Carrusel"},
                new MachineFamily{FamilyDescription="Peluchera"},
                new MachineFamily{FamilyDescription="Redemption"},
                new MachineFamily{FamilyDescription="Simulador"},
            };
        foreach (MachineFamily f in familias)
        {
            context.MachineFamilies.Add(f);
        }
        context.SaveChanges();
    }
 }

到目前为止,我只是通过迁移更新数据库,如果我要添加新模型或属性,但我想添加一个带有一组值的新模型,我可以重新使用DbInitializer吗?这没有删除当前的数据库?应该如何编辑?我担心,如果我改变它,我可能会覆盖它的某些部分。

1 个答案:

答案 0 :(得分:0)

好吧,您应该可以重新使用DbInitiliazer。只需稍微更改一下,这样你就可以播种不仅仅是一个实体:

public class DbInitializer
{
    public static void Initialize(PlataformaContext context)
    {
        context.Database.EnsureCreated();

        if (!context.MachineTypes.Any())
        {
            var familias = new MachineFamily[] { ... };
            // No need for foreach, AddRange does it for you
            context.MachineFamilies.AddRange(familias);
        }

        if (!context.SomeOtherTypes.Any())
        {
            var someOtherType = new SomeOtherType[] { ... };
            context.SomeOtherTypes.AddRange(someOtherType );
        }

        context.SaveChanges();
     }
 }