C# DbSet.Find()不';Guid属性不起作用
我有两种型号C# DbSet.Find()不';Guid属性不起作用,c#,.net,asp.net-core,entity-framework-core,linq-expressions,C#,.net,Asp.net Core,Entity Framework Core,Linq Expressions,我有两种型号 public class QChoice : ModelWithGuid { [Required] public Guid? QId { get; set; } } public class ModelWithGuid { [Key] public Guid Id { get; set; } = Guid.NewGuid(); } 我正在CHOICE Dbset上执行查找操作 DataContext.QChoice.Find(choice =&g
public class QChoice : ModelWithGuid
{
[Required]
public Guid? QId { get; set; }
}
public class ModelWithGuid
{
[Key]
public Guid Id { get; set; } = Guid.NewGuid();
}
我正在CHOICE Dbset上执行查找操作
DataContext.QChoice.Find(choice => choice.QId.Value.Equals("Guid")).ToList();
从上一行查找下面的操作调用方法
public IEnumerable<T> Find(Expression<Func<T, bool>> predicate)
{
var resultData = table.Find(predicate);//table means QChoice DbSet
yield return resultData;
}
public IEnumerable Find(表达式谓词)
{
var resultData=table.Find(谓词);//table表示QChoice DbSet
生成返回结果数据;
}
我收到的错误类似于“调用'DbSet.Find'的位置0处的键值的类型为'Expression>,与'Guid'的属性类型不匹配。请根据文档帮助我
EF CoreDbSet.Find
不接受任何谓词
,而是将实体的主键作为对象,如下所示:
var qChoice = DataContext.QChoice.Find(choice.QId);
public T Find(Expression<Func<T, bool>> predicate)
{
var resultData = table.Where(predicate).FirstOrDefault();
return resultData;
}
此外,如果希望使用谓词查找,请按如下方式更新find
方法:
var qChoice = DataContext.QChoice.Find(choice.QId);
public T Find(Expression<Func<T, bool>> predicate)
{
var resultData = table.Where(predicate).FirstOrDefault();
return resultData;
}
public T-Find(表达式谓词)
{
var resultData=table.Where(谓词).FirstOrDefault();
返回结果数据;
}
不知道您是否找到了解决方案。它在我的本地机器上工作,但在服务器上不工作!