gpt4 book ai didi

c# - 如何使用通用属性类型查询 EntityFramework?

转载 作者:行者123 更新时间:2023-11-30 23:16:27 29 4
gpt4 key购买 nike

当我通过传递比较泛型类型 TId 的谓词调用 DbSet.FirstOrDefault() 时,出现以下异常:

unable to create a constant value of type 'system.object'. only primitive types or enumeration types are supported in this context.

查询类型的接口(interface):

interface IEntity<TId>
{
TId id { get; set; }
}

这里抛出异常:

public virtual TEntity Get<TEntity, TId>(TId id) where TEntity : class, IEntity<TId>
{
return dbContext.Set<TEntity>().FirstOrDefault(e => e.Id.Equals(id));
}

该函数仅在 TId 被限制为 struct 时才有效。如何包含 string 作为支持的类型?如果不可能,是否可以通过其他方式完成任务?

最佳答案

这也适用于字符串:

public virtual TEntity Get<TEntity, TId>(TId id) 
where TEntity : class, IEntity<TId>
where TId: IEquatable<TId>
{
return dbContext.Set<TEntity>().FirstOrDefault(e => e.Id.Equals(id));
}

关于c# - 如何使用通用属性类型查询 EntityFramework?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41995319/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com