为什么我会收到无法隐式转换为布尔错误?

Why am I getting a cannot implicitly convert int to bool error?

我不明白为什么说我正在尝试将 int 转换为 bool。这可能是一个简单的问题,但它让我头疼。谁能看到我的问题。我在 "if (dao.Update(call))" 和 "if (vm.Update())" 上的单元测试中遇到错误。它说我不能隐式地将 int 转换为 bool。它可能是我的 DAO 和 ViewModel 的更新方法吗?提前感谢任何可以帮助我的人。干杯。

这是我的实体 class:

public class Call : IMongoEntity
    {
        public ObjectId _id { get; set; }
        public string _accessId { get; set; }
        public ObjectId EmployeeId { get; set; }
        public ObjectId ProblemId { get; set; }
        public ObjectId TechId { get; set; }
        public System.DateTime DateOpened { get; set; }
        public System.DateTime? DateClosed { get; set; }
        public bool OpenStatus { get; set; }
        public string Notes { get; set; }
    }

这是我的 DAO 代码:

public int Update(Call call)
        {
            int updateOK = -1;
            try
            {
                DbContext ctx = new DbContext();
                ctx.Save<Call>(call, "calls");
                updateOK = 1;
            }
            catch (MongoConcurrencyException ex)
            {
                updateOK = -2;
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Problem " + ex.Message);
                DALUtils.ErrorRoutine(ex, "CallDAO", "Update");
            }
            return updateOK;
        }

这是我的 ViewModel 代码:

public int Update()
        {
            int rowsUpdated = -1;
            try
            {
                Call call = new Call();
                call.DateOpened = DateOpened;
                call.DateClosed = DateClosed;
                call.OpenStatus = OpenStatus;
                call.Notes = Notes;
                rowsUpdated = _dao.Update(call);
            }
            catch (Exception ex)
            {
                ViewModelsUitls.ErrorRoutine(ex, "CallViewModel", "Update");
            }
            return rowsUpdated;
        }

这是我的 DAO 和 ViewModel 单元测试代码:

[TestMethod]
        public void CallDAOComprehensiveTestsReturnTrue()
        {
            CallDAO dao = new CallDAO();
            Call call = new Call();
            call.DateOpened = DateTime.Now;
            call.DateClosed = null;
            call.OpenStatus = true;
            call.EmployeeId = new MongoDB.Bson.ObjectId("56527d3e3e400c1adc33ad37"); // bigshot
            call.TechId = new MongoDB.Bson.ObjectId("56527d3e3e400c1adc33ad3d"); // Burner
            call.ProblemId = new MongoDB.Bson.ObjectId("56527d3e3e400c1adc33ad44");//memory
            call.Notes = "Bigshot has bad RAM, Burner to fix it";
            string newId = dao.Create(call);
            this.testContextInstance.WriteLine("New Call Id == " + newId);
            call = dao.GetById(newId);
            this.testContextInstance.WriteLine("Call retrieved");
            call.Notes = call.Notes + "\nOrdered new Ram";

            if (dao.Update(call))
                this.testContextInstance.WriteLine("Call was updated " + call.Notes);
            else
                Trace.WriteLine("Call was not updated");

            if (dao.Delete(newId))
                this.testContextInstance.WriteLine("call was deleted");
            else
                this.testContextInstance.WriteLine("call was not deleted");
            call = dao.GetById(newId);
            Assert.IsNull(call);
        }

        [TestMethod]
        [ExpectedException(typeof(MongoDB.Driver.MongoException),"No Id exists")]
        public void CallViewModelComprehensiveTestsReturnTrue()
        {
            CallViewModel vm = new CallViewModel();
            vm.DateOpened = DateTime.Now;
            vm.OpenStatus = true;
            vm.EmployeeId = "56527d3e3e400c1adc33ad37"; // Bigshot
            vm.TechId = "56527d3e3e400c1adc33ad3d"; // Burner
            vm.ProblemId = "56527d3e3e400c1adc33ad44"; // memory
            vm.Notes = "Bigshot has ban RAM, Burner to fix it";
            vm.Create();
            this.testContextInstance.WriteLine("New call Id == " + vm.Id);
            vm.GetById(vm.Id);
            this.testContextInstance.WriteLine("Call retrieved");
            vm.Notes = vm.Notes + "\nOrdered new Ram";

            if (vm.Update())
                this.testContextInstance.WriteLine("Call was updated " + vm.Notes);
            else
                Trace.WriteLine("Call was not updated");

            if (vm.Delete(vm.Id))
                this.testContextInstance.WriteLine("Call was deleted");
            else
                this.testContextInstance.WriteLine("Call was not deleted");

            vm.Update(); // should throw MongoException see attribute
        }

if 语句检查参数是否为真,然后执行块内的代码。

dao.Update(call)

returns 一个整数。整数不是布尔值。将它放在 if 语句中相当于做

if (dao.Update(call) == true) 

转换为

if ([integer value] == true)

这就是您看到错误的原因。

您需要做的是将 Update() 的 return 类型更改为布尔值,或者检查整数 returned 是否为预期值,例如

if (dao.Update(call) > 0)