基于TableName动态获取实体模型?

时间:2018-12-13 22:01:25

标签: c# entity-framework .net-assembly system.reflection

我正在将表名传递给函数,我需要动态获取实体的名称并正常使用该实体。

常规硬编码方式 MyEntity myEntity = new MyEntity();

我试图得到它,但这不起作用

 // Get the Assembly here as the entites exist in another project within the solution

  //Now that we have the assembly, search through it to get the correct entity based on the tablename string
 var assembly = AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName.Contains("NAMESPACE")).FirstOrDefault();

                 var type = assembly.GetTypes()
                    .FirstOrDefault(t => t.Name == tableName);

                    if (type != null)
                    {
                        System.Data.Entity.DbSet myDbSet = context.Set(type);

                       myDbSet myEntity = new ??? <-- I need to create an instance of the entity here

                      }

1 个答案:

答案 0 :(得分:1)

您可以使用Activator.CreateInstanceDbSet.Create()创建实体。然后使用DbSet.Add()将其添加到dbset。

请参见下面的示例

object entityObj = dbSet.Create();

//Populate values using reflection / dynamic
//....

dbSet.Add(entityObj);
dbSet.SaveChanges();

希望这会有所帮助。