无法将类型'MongoDB.Driver.ReplaceOneResult'隐式转换为'T'

时间:2019-09-18 06:28:01

标签: c# mongodb generics

我在WinForm项目中使用MongoDB,并且正在创建一个实用程序函数,可用于upsert数据库中的记录。

到目前为止,这是方法:

public async Task<T> UpdateRoomType<T>(string table, string roomTypeName, T record) 
{
    var collection = db.GetCollection<T>(table);

    var filter = Builders<T>.Filter.Eq(Constants.ROOM_TYPE, roomTypeName);

    var result =  await collection.ReplaceOneAsync(
        filter,
        record,
        new UpdateOptions { IsUpsert = true }
        );

    return result;
}

但是我遇到一个构建错误:

  

无法将类型'MongoDB.Driver.ReplaceOneResult'隐式转换为'T'

如何解决此功能,以正确地将更新后的记录返回给调用者?

1 个答案:

答案 0 :(得分:1)

您应该返回适​​当的类型:

public async Task<ReplaceOneResult> UpdateRoomType<T>(string table, string roomTypeName, T record)
                        ^
                        |

该错误告诉您正在返回类型为MongoDB.Driver.ReplaceOneResult的对象,该对象似乎是:

return result;

但是在您的方法中,您将返回类型声明为T

public async Task<T> UpdateRoomType<T>

出现错误。