在汽车共享应用程序中,用户可以提供乘车,然后每次乘车都包含预订列表。
但是,当我尝试添加预订时,即使客户(已经添加)已经附加,它也无效...
例外情况是:
附加'CARS_Models.Models.Member'类型的实体失败,因为 另一个相同类型的实体已经具有相同的主键值。 使用“附加”方法或设置状态时可能会发生这种情况 实体到'未更改'或'已修改'如果图表中的任何实体有 冲突的关键值。这可能是因为一些实体是新的并且具有 尚未收到数据库生成的键值。在这种情况下,请使用'添加' 方法或'添加'实体状态以跟踪图形然后设置 非新实体的状态为'未更改'或'已修改'。
方法是:
public void AddBooking(Booking b)
{
using (var ctx = new DataContext(Settings.Default.db))
{
ctx.Members.Attach(b.Customer);
ctx.Ride.Attach(b.Ride);
ctx.Bookings.Add(b);
ctx.SaveChanges();
}
}
我在这个项目中所做的其他事情都很好,除了这个。我不明白为什么这不起作用..我也尝试在“添加”之后“附加”,但它也不起作用。
类属性:
public class Ride
{
public int Id { get; set; }
public Member Driver { get; set; }
public int TotalSeats { get; set; }
public DateTime Date { get; set; } = DateTime.Now;
public String Departure { get; set; }
public String Arrival { get; set; }
public int Price { get; set; }
public List<Booking> Bookings { get; set; } = new List<Bookings>();
}
public class Member
{
public string Login { get; set; } //This is the PK
public string Password { get; set; }
public List<Ride> Rides { get; set; } = new List<Ride>(); //Rides that this member will drive.
public List<Booking> Bookings { get; set; } = new List<Reservation>(); //All the bookings he made (for others ride).
}
public class Booking
{
public int Id { get; set; }
public Member Customer { get; set; } //The member who paid.
public int Seats { get; set; } //Because someone can book more than 1 seat.
public Ride Ride { get; set; } //The ride it concerns.
}