In seeding, I use collection of jsons to read it and insert in DB.
I using this function
private void Seed<T, T2>(DbSet<T> dataSet, Func<T, T2> uniquProperty) where T : class, ISeedableEntity<T>
{
var separtor = Path.DirectorySeparatorChar;
var tableName = Model.FindEntityType(typeof(T)).SqlServer().TableName;
var baseDir = Assembly.GetExecutingAssembly().Location;
baseDir = Path.GetDirectoryName(baseDir);
var filePath = $"{baseDir}{separtor}Data{separtor}{tableName}.json";
if (File.Exists(filePath))
{
var data = File.ReadAllText(filePath);
var items = JsonConvert.DeserializeObject<List<T>>(data);
foreach (var item in items)
{
var found = dataSet.Where(
a => uniquProperty(a).Equals(uniquProperty(item))).FirstOrDefault();
if (found != null)
{
found = found.Update(item);
dataSet.Update(found);
}
else
dataSet.Add(item);
}
SaveChanges();
}
}
And call it as this code.
Seed(CreditRatings, a => a.Id);