Получение Entity Model динамически на основе TableName? - PullRequest
0 голосов
/ 14 декабря 2018

Я передаю имя таблицы в функцию, и мне нужно динамически получить имя объекта и использовать его как обычно.

Обычный жестко закодированный способ 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 голосов
/ 14 декабря 2018

Вы можете использовать Activator.CreateInstance или DbSet.Create() для создания сущности.Затем используйте DbSet.Add(), чтобы добавить его в dbset.

См. Пример ниже

object entityObj = dbSet.Create();

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

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...