是否想在不使用表中主键的情况下更新数据库?

时间:2020-10-12 09:42:46

标签: c# entity-framework sql-server-2012

显示错误信息“属性'AvailableSeats'是对象的关键信息的一部分,无法修改。” 我知道出现错误是因为我的表中没有主键,但是替代的解决方案是什么,因为我们作为一个团队来从事项目工作,现在如果我在数据库中进行更改,那么最终我们将无法能够彼此同步或合并我们的项目。请帮帮我。

这是我的asp.net mvc控制器:-

[ResponseType(typeof(Boolean))]
public IHttpActionResult PutAmount(CancelFlightDetails c3)
{
    try
    {
        var amount = db.Customers.SingleOrDefault(f => f.Name == c3.Name && f.TicketNumber == c3.TicketNumber);
        var amount1 = db.SeatsAvailabilities.FirstOrDefault(g => g.DepartureDate == c3.DepartureDate && g.FlightNumber == amount.FlightNumber);
        var amount2 = db.SeatsAvailabilities.SingleOrDefault(g => g.DepartureDate == c3.DepartureDate && g.FlightNumber == amount.FlightNumber); ;

        if (c3.DepartureDate == DateTime.Now.Date && amount2 != null)
        {
            amount2.AvailableSeats += 1;
            amount2.TotalRevenue += c3.FareDetails;
            db.Entry(amount2).State = EntityState.Added;
            db.SeatsAvailabilities.Remove(amount1);
            db.SaveChanges();
            return Ok(true);
        }
        else
        {
            amount2.AvailableSeats ++;
            amount2.ExtraRevenue += (decimal)0.6 * amount2.FareDetails;
            amount2.TotalRevenue += amount2.ExtraRevenue;
            db.Entry(amount2).State = EntityState.Added;
            db.SeatsAvailabilities.Remove(amount1);
            //db.Entry(amount2).State = EntityState.Modified;
            db.SaveChanges();
            return Ok(true);
        }
    }
    catch (Exception ex)
    {
        throw ex;
        //return Content(HttpStatusCode.InternalServerError, "Sql Server not connected");
    }
}

因此,首先,我尝试使用EntityState.Modified,但它抛出了上面显示的错误,然后尝试通过添加新对象并删除先前的但仍然相同的错误来覆盖。

0 个答案:

没有答案