我正在尝试创建一个程序包,该程序包将使用JSON文件中的数据来帮助种子数据库,这些数据可以手动创建,也可以从旧数据库中提取.目前,我已经创建了一个泛型类SeedCreator<T>,它从给定文件中检索JSON(实体的名称加上.json)并将其反序列化为给定类型的对象.这部分工作正常.
为了使这个过程尽可能动态,我通过使用命名空间标识所有类来对项目中的实体进行反射Entities.有了这个,我循环检索List并检查JSON文件是否存在.如果是的话,我将路径和泛型类型传递给类SeedsCreator.在运行时进行调试时Add-Migration,数据会按照我对JSON文件的预期返回,但在modelBuilder返回变量后我得到错误The seed entity for entity type 'Table1' cannot be added because there was no value provided for the required property 'Id'.
如果我手动输入以下它可以正常工作.
modelBuilder.Entity(typeof(Table1)).HasData(data);
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.特别是如果我是盲人并做了一些非常简单和愚蠢的事情.
public class Seeds
{
public ModelBuilder CreateSeeds(ModelBuilder modelBuilder)
{
var entities = (from t in Assembly.GetExecutingAssembly().GetTypes()
where t.Namespace != null && (t.IsClass && t.Namespace.Contains("Entities"))
select t).ToList();
foreach (var type in entities)
{
if (File.Exists("./Seeds/" + type.Name + ".json"))
{
Type[] …Run Code Online (Sandbox Code Playgroud) c# entity-framework-core .net-core asp.net-core-2.1 ef-core-2.1