8

有时,由于许多相关的表,样本数据很重要,但生成起来很无聊。因此,在 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();
4

1 回答 1

1

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

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

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

例如

var countriesStream = new StreamReader(HostingEnvironment.MapPath("jsonFile.json"));
try
{
    countriesList = JsonConvert.DeserializeObject<List<Country>>(countriesStream.ReadToEnd());
}
于 2015-12-21T18:26:09.697 回答