我正在将表名传递给函数,我需要动态获取实体的名称并正常使用该实体。
常规硬编码方式 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
}
答案 0 :(得分:1)
您可以使用Activator.CreateInstance
或DbSet.Create()
创建实体。然后使用DbSet.Add()
将其添加到dbset。
请参见下面的示例
object entityObj = dbSet.Create();
//Populate values using reflection / dynamic
//....
dbSet.Add(entityObj);
dbSet.SaveChanges();
希望这会有所帮助。