我希望创建一个辅助方法来检查数据库中是否存在某个条目。
我已经尝试了以下代码:
我正在遇到这个错误信息:
因为方法
我该怎么做呢?非常感谢!
我已经尝试了以下代码:
public static class DbContextExtensions
{
public static bool Exist<TModel>(this DbSet<TModel> model, string id) where TModel : class
{
return !string.IsNullOrEmpty(id) && model.SingleOrDefault(x => x.Id == id) != null;
}
}
我正在遇到这个错误信息:
我的目标是:'TModel'不包含“Id”的定义,且找不到接受类型为'TModel'的第一个参数的扩展方法“Id”(是否缺少using指令或程序集引用?)
public class PostManager
{
private readonly _dbContext;
public PostManager(MyDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<IdentityResult> UpdateAsync(EditPostViewModel model)
{
if (_dbContext.Users.Exist(model?.UserId) && _dbContext.Posts.Exist(model?.Id))
{
// the user with "UserId" and the post with "Id" are existing...
}
}
}
我不想在PostManager
类内部创建帮助方法,像这样:
public class PostManager
{
// contructor...
// actions...
private bool UserExist(string id)
{
return !string.IsNullOrEmpty(id) && _dbContext.Users.SingleOrDefault(x => x.Id == id) != null;
}
private bool PostExist(string id)
{
return !string.IsNullOrEmpty(id) && _dbContext.Posts.SingleOrDefault(x => x.Id == id) != null;
}
}
因为方法
UserExist
和 PostExist
可能会在许多其他类中使用。因此,在每个类中使用它们之前,我不想重新声明它们。我该怎么做呢?非常感谢!
where TModel : class
- 这告诉编译器 TModel 是class
类型,它过于通用,不包含id
属性。因此,如果您有任何基础实体类,请将其指向该类,例如where TModel:Entity
。 - Jayamodel.Any(x => x.Id == i)
来检查存在性,而不是使用model.SingleOrDefault(x => x.Id == i) != null
。 - Evk