Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DbSet.Find()不';Guid属性不起作用_C#_.net_Asp.net Core_Entity Framework Core_Linq Expressions - Fatal编程技术网

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 Core
DbSet.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();
返回结果数据;
}

不知道您是否找到了解决方案。它在我的本地机器上工作,但在服务器上不工作!