c#MongoDB Repo对Delete(string id)函数的引用赢得';t接受正在传递的字符串DAO参数
本文关键字:DAO 参数 字符串 string Delete Repo id c#MongoDB 引用 函数 | 更新日期: 2023-09-27 18:13:28
我正试图在DAL EmployeeDAO中创建一个Delete函数,如下所示:
public long Delete(string Id)
{
HelpdeskRepository repo = new HelpdeskRepository(new DbContext());
long deleteFlag = 0;
if (Id.Count() > 0)
{
repo.Delete(Id.GetIdAsString());
deleteFlag = 1;
return deleteFlag;// if found count = 1 == true
}
else
{
return deleteFlag;
}
}
然而,repo.Delete(Id.GetIdAsString());
不起作用,给了我错误
Cs1061错误CS1061"string"不包含"GetIdAsString"的定义,并且>找不到接受类型为"string">的第一个参数的扩展方法"GetIdAsString">
因此,它所引用的Repository(repo(函数是:
public long Delete<HelpdeskEntity>(string id)
{
var filter = new FilterDefinitionBuilder<HelpdeskEntity>().Eq("Id", new ObjectId(id));
var collection = GetCollection<HelpdeskEntity>();
var deleteRes = collection.DeleteOne(filter);
return deleteRes.DeletedCount;
}
和GetIdAsString((函数:
public string GetIdAsString()
{
return this.Id.ToString();
}
我不明白为什么Id参数在repo.Delete
调用中也不起作用,因为Delete接受字符串参数,Id的类型是字符串。
有什么想法,或者更好的方法来实现这一点吗?由于未来的项目需求依赖于存储库方法,我无法使用Insert/async/await创建方法,因此必须使用repo.Delete
函数来完成。
请问您在哪里定义GetIdAsString()
方法?Delete(string Id)
中的Id
已经是string
,而string
类没有扩展方法GetIdAsString()
,因此会发生错误。
在Delete<HelpdeskEntity>(string id)
中,参数id
已经是string
,所以使用GetIdAsString()
方法对我来说没有意义。只需使用repo.Delete(Id)
即可。
因此,首先,您引用GetIsAsString((,就好像它是一个扩展方法一样:
repo.Delete(Id.GetIdAsString());
如果你希望它是一个扩展方法,它应该看起来像这样(在静态类中(
public static string GetIdAsString(this ObjectId id)
{
return id.ToString();
}
否则,如果它与您的Id属性在同一个类中,请这样引用它:
repo.Delete(GetIdAsString());
但老实说,我不理解GetIdAsString((方法的用途。
它是在Id参数上调用的,该参数已经是一个字符串变量。
所以这应该工作
repo.Delete(Id);
此外,我认为您将希望在这里引用_id,并且不需要将其强制转换为ObjectId或
var filter = new FilterDefinitionBuilder<HelpdeskEntity>().Eq("_id", id);