Код .NET Framework 4.8 (EF6) для .NET Core (.NET6, EFCore6)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Код .NET Framework 4.8 (EF6) для .NET Core (.NET6, EFCore6)

Сообщение Anonymous »

Я пытаюсь преобразовать приложение .NET Framework 4.8 (EF6) в .NET Core 6 (EFCore 6).
У меня есть этот метод, который работает в .NET 4.8:

Код: Выделить всё

private async Task someMethod(PropertyInfo propModel, string ident, string text, string val) {
Type nestedModel = propModel.PropertyType;
DbSet nestedModelDbset = db.Set(nestedModel);

PropertyInfo propIdent = nestedModel.GetProperty(ident);
var nestedItem = await nestedModelDbset.Where(propIdent.Name + "== @0", val).Take(1).ToListAsync();
var nestedInstance = nestedItem.First();
PropertyInfo propToShow = nestedModel.GetProperty(text);
string valToShow = (propToShow.GetValue(nestedInstance)).ToString();
return valToShow;
}
Я несколько часов пытался преобразовать его для работы в .NET Core 6, но все, что я пробовал, не помогло...
Любая помощь?
ОБНОВЛЕНИЕ
Хорошо, судя по комментариям, я постараюсь дать больше информации...
По сути, это состоит из двух частей: первая — получение правильного набора баз данных, вторая — запрос к нему для получения желаемого значения.
Для второй части :

Код: Выделить всё

.Where(propIdent.Name + "== @0", val)
Хорошо, я думал, что это стандартный LINQ, но, похоже, это связано с использованием System.Linq.Dynamic.Core (комментарий Dai заставил меня покопаться в этом, так что спасибо)
(проверьте [https://www.nuget.org/packages/System.L ... amic.Core/][1])
(извините, это старый проект, и я даже не знал, что он использует дополнительные nugets)< /p>
Похоже, что nuget также работает для .NET Core, поэтому я установил его в новый проект, и теперь эта часть кода не показывает ошибок... но я не могу знать наверняка, так ли это будет работать до тех пор, пока у меня не заработает первая часть (получение набора баз данных)...
ОБНОВЛЕНИЕ 2
ок Клянусь, я потерял на это часы, а после публикации здесь я решил проблему за считанные минуты. О боже...
и наконец:
1.- установите nuget

System.Linq.Dynamic.Core

2.- добавил этот метод из этот другой ответ SO: https://stackoverflow.com/a/59496444

Код: Выделить всё

public static IQueryable Set(this DbContext context, Type T)
{
var method = typeof(DbContext).GetMethods().Single(p =>
p.Name == nameof(DbContext.Set) && p.ContainsGenericParameters && !p.GetParameters().Any());

// Build a method with the specific type argument you're interested in
method = method.MakeGenericMethod(T);

return method.Invoke(context, null) as IQueryable;
}
3.- затем мой исправленный метод:

Код: Выделить всё

private async Task someMethod(PropertyInfo propModel, string ident, string text, string val) {
Type nestedModel = propModel.PropertyType;
//DbSet nestedModelDbset = db.Set(nestedModel);

IQueryable nestedModelDbset = db.Set(nestedModel);

PropertyInfo propIdent = nestedModel.GetProperty(ident);
var nestedItem = await nestedModelDbset.Where(propIdent.Name + "== @0", val).Take(1).ToListAsync();
var nestedInstance = nestedItem.First();
PropertyInfo propToShow = nestedModel.GetProperty(text);
string valToShow = (propToShow.GetValue(nestedInstance)).ToString();
return valToShow;
}
и вуаля, все работает!
Мне нравится этот сайт XD

Подробнее здесь: https://stackoverflow.com/questions/782 ... t6-efcore6
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Миграция DbContext.Set(Type) | От EF6 до EF Core
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Миграция DbContext.Set(Type) | От EF6 до EF Core
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Получите размер пакета для сообщения в .NET6 с помощью Grpc.Core
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»