将数据导出为C#/ VB格式,以便在EF Code First的数据库初始化中使用它们

vic*_*woo 8 database entity-framework export code-first

有时,样本数据很重要,但由于许多相关表格而无法生成.因此,在Entity Framework Code First中,我认为将它们插入DropCreateDatabaseIfModelChanges :: Seed()是一种优雅的方式.

但有没有办法将现有数据从数据库导出回字符串作为插入poco对象的C#/ VB语句?

如果它有效,我们可以使用它来优雅地备份数据,或者通过场景保存到多个.cs,根据需要切换它们以更好地进行测试等.

数据库导出为以下代码:

var students = new List<Student>
{
    new Student { FirstMidName = "Carson",   LastName = "Alexander", },
    new Student { FirstMidName = "Meredith", LastName = "Alonso",    },
    new Student { FirstMidName = "Arturo",   LastName = "Anand",     },
    // ...
};
students.ForEach(s => context.Students.Add(s));
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

Wah*_*tar 1

正如@Luke 在他的评论中建议的那样。最好的方法是为种子数据生成 Json 文件。

在本文中,您可以找到从 SQL 查询生成 Json 的简单方法。

那么你所需要的就是通过 Newtonsoft.Json 阅读它们

例如

var countriesStream = new StreamReader(HostingEnvironment.MapPath("jsonFile.json"));
try
{
    countriesList = JsonConvert.DeserializeObject<List<Country>>(countriesStream.ReadToEnd());
}
Run Code Online (Sandbox Code Playgroud)