Как я создаю модель динамически в C # во время выполнения - PullRequest
0 голосов
/ 09 января 2019

Мне нужно создать единый метод для выполнения операции crud на всех моих столах. Как

EntitySave()
EntityUpdate()
EntityGetList()

После создания этого метода я хочу выполнить все операции для всей таблицы в этом методе. Поэтому, когда мне нужно сохранить данные со стороны клиента. Мне просто нужно передать имя таблицы и значения полей в параметре для сохранения данных в этой конкретной таблице. (Значит, я хочу создать модель во время выполнения). В техническом слове у меня есть общий метод crud для удаления обновления вставки, поэтому в одном методе Я могу выполнить все это на разных столах.

 public ActionResult method()
    {

        var Dict =  HttpContext.Application["SiteSettings"] as Dictionary<string, Dictionary<string, Dictionary<string, string>>>;
        string value = "";
        foreach(var key in Dict.Keys)
        {
              value = key;
        }

        Assembly Exectuteassembly = Assembly.GetExecutingAssembly();
        Type Etity = Exectuteassembly.GetType(value);
        object TGalaxyUserInstance = Activator.CreateInstance(Etity);
        PropertyInfo[] properties = Etity.GetProperties(
   BindingFlags.NonPublic | // Include protected and private properties
   BindingFlags.Public | // Also include public properties
   BindingFlags.Instance // Specify to retrieve non static properties
   );

        string[] values = new string[4];
        values[0] = "0";
        values[1] = "ThisTesting";
        values[2] = "Howto";
        values[3] = "UseInstance";
        for (int i = 0, j = 0; j < properties.Length; j++, i++)
        {
            if(i==0 && j == 0)
            {
                properties[i].SetValue(TGalaxyUserInstance, j, null);
            }
            else
            {
                properties[i].SetValue(TGalaxyUserInstance,values[j], null);
            }

        }


        using (var _mSession = ApplicationCore.Instance.SessionFactory.OpenSession())
        {
            using (var transaction = _mSession.BeginTransaction())
            {

                _mSession.Save(TGalaxyUserInstance);
                transaction.Commit();
            }
        }
        return RedirectToAction("List", "Home");


    }

1 Ответ

0 голосов
/ 09 января 2019

Вы хотите применить шаблон репозитория. Ссылка ниже иллюстрирует пример, который поможет вам. https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/infrastructure-persistence-layer-design Проблема передачи таблицы решается с помощью обобщений, и пример показывает это тоже.

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