Динамическое приведение Entity Model из результатов SQL-запроса - PullRequest
0 голосов
/ 16 января 2019

Мне нужно динамически привести возвращаемое значение SQL к модели, подобной этой

var data = _db.Query<myModel>(myStoredProcedure, p, commandType: System.Data.CommandType.StoredProcedure);

Вышеописанное работает как следует, поскольку модель явно указана в приведении.

Однако myModel может быть классом модели любого типа, который есть в моем проекте. Я могу получить реальную модель с помощью отражения и использования строковой переменной с именем «TableName» Я думал, что мог бы пойти этой процедурой, чтобы установить его, но я получаю ошибку «entityObject - переменная, но используется как тип»

 //First we need to find the project that holds all of our entity models in the assembly
                    var assembly = AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName.Contains("MyProject.Models")).FirstOrDefault();

                    //Now we need to search through the assembly to match the Entity to the supplied TableName
                    var type = assembly.GetTypes()
                    .FirstOrDefault(t => t.Name == localTableName);

                    //Once found then we create a dynamic instance of the entity using reflection
                    if (type != null)
                    {
                        var ctx = new MyProject.Models.Entities();

                       //Create the DBSet here
                        System.Data.Entity.DbSet myDbSet = ctx.Set(type);

                        //Now create the actual entity reference which is just an object at this point
                        var entityObject = myDbSet.Create();


--> Errors here var data = _db.Query<entityObject>(myStoredProcedure, p, commandType: System.Data.CommandType.StoredProcedure);
}

Должен ли я использовать ExpandoObject? Если да, то как можно преобразовать объект расширения в объект entityClass?

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