c# - Entity Framework 代码优先 : Configuration. cs 种子或自定义初始值设定项

标签 c# entity-framework ef-code-first

我是第一次使用 Entity Framework 的 Code First 风格。我想设置一些默认数据。我遇到的第一种方法涉及创建一个 custom initializer .我走的是这条路线,但在设置迁移后注意到它随 Configuration.cs 一起提供,它已经覆盖了种子方法,就像自定义初始化程序一样。

internal sealed class Configuration : DbMigrationsConfiguration<Toolkit.Model.ToolkitContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(Toolkit.Model.ToolkitContext context)
    {
        //  This method will be called after migrating to the latest version.

        //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
        //  to avoid creating duplicate seed data. E.g.
        //
        //    context.People.AddOrUpdate(
        //      p => p.FullName,
        //      new Person { FullName = "Andrew Peters" },
        //      new Person { FullName = "Brice Lambson" },
        //      new Person { FullName = "Rowan Miller" }
        //    );
        //
    }
}

所以看起来有两种方法可以完成这个任务。有人可以阐明推荐的做法是什么吗?还是这根本不重要,我应该抛硬币?

最佳答案

Configuration.cs Seed 方法将在您的模型每次更改时运行,以确保某些特定数据保留在您的数据库中,或者甚至可能将该数据重置为指定的默认设置。

另一方面,Custom Initializer 的 seed 方法可以设置为在每次应用程序加载时运行,例如这段代码,它当前位于我的 MVC 页面的 Global.asax 文件中:

Database.SetInitializer(new MyCustomInitializer<MyDbContext, Configuration>());
var db = new MyDbContext();
db.Database.Initialize(true);

实际差异在您部署应用程序后才真正发挥作用。 Custom Initializer 将确保没有用户可以破坏程序中绝对需要的某些数据。

关于c# - Entity Framework 代码优先 : Configuration. cs 种子或自定义初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13980335/

相关文章:

c# - 在 C# 中将 float 转换为十进制。为什么 (decimal)0.1F == 0.1M 不是因为四舍五入而为假?

c# - 比较两个 .net 对象值的 'similarity'

c# - 简单的 MVC 评论审核

c# - 为什么带有Func参数的.Where()执行查询?

mysql - 首先在 WCF 服务中的何处为 EF6 代码设置 DbConfiguration?

entity-framework - 首先使用 EF 代码更改数据库架构时最简单的做法是什么

c# - 我有 “Server Error in '/' Application. Invalid postback or callback argument.”,但我不知道如何解决

c# - 带字符串的双 block 引号不起作用

c# - Where 子句中包含 ".Any"的动态 Linq (C#/.Net Core/EF Core)

c# - 为什么当我在 LINQ to Entities 查询中使用 GroupBy() 时,结果中的导航属性为空?