DbSet.Find () не работает для свойств Guid - PullRequest
0 голосов
/ 09 января 2020

У меня есть две модели

public class QChoice : ModelWithGuid
{
    [Required]
    public Guid? QId { get; set; }
}

public class ModelWithGuid
{
    [Key]
    public Guid Id { get; set; } = Guid.NewGuid();
}

Я выполняю операцию FInd для CHB Dbset.

DataContext.QChoice.Find(choice => choice.QId.Value.Equals("Guid")).ToList();

Из приведенной выше строки Find Operation вызывает следующий метод.

public IEnumerable<T> Find(Expression<Func<T, bool>> predicate)
{
  var resultData = table.Find(predicate);//table means QChoice DbSet
  yield return resultData;
}

Я получаю сообщение об ошибке типа «Значение ключа в позиции 0 вызова DbSet.Find было типа« Выражение> », что не соответствует типу свойства« Guid »». Пожалуйста, помогите мне

1 Ответ

1 голос
/ 09 января 2020

Согласно этой документации

EF Core DbSet<TEntity>.Find не принимает predicate, а принимает первичный ключ объекта как объект следующим образом:

var qChoice = DataContext.QChoice.Find(choice.QId);

Более того, если вы хотите найти с предикатом, чем обновите ваш метод Find следующим образом:

public T Find(Expression<Func<T, bool>> predicate)
{
     var resultData = table.Where(predicate).FirstOrDefault();
     return resultData;
}
...