[英]How to post a one-to-many relationship from separate views?
我有唱片班和汽車班。 一條記錄可以有多輛汽車。 我正在嘗試使用RecordID作為兩者之間的鍵。 在第一個視圖上,我的表單正在填充記錄類的模型。 然后,我想轉到另一個視圖並將汽車添加到記錄中。 導航到第二個視圖后,如何告訴要使用哪個記錄ID的汽車? 我正在閱讀有關ViewModels和工作單元的信息。 不確定差異和/或這些是否是我要尋找的。 我將在模型和存儲庫方法中包括一些代碼。 謝謝!
Record.cs
namespace Train.Models {
public class Record {
public int RecordId { get; set; }
public int Quantity { get; set; }
public DateTime DateCreated { get; set; }
public bool IsActive { get; set; }
public string UserId { get; set; }
public virtual ICollection<Cars> Cars { get; set; }
}
}
Cars.cs
namespace Train.Models {
public class Cars {
public int Id { get; set; }
public string EmptyOrLoaded { get; set; }
public string CarType { get; set; }
//Hopper, flatbed, tank, gondola, etc.
public string ShippedBy { get; set; }
//UP(Union Pacific) or BNSF
public string RailcarNumber { get; set; }
//public virtual ApplicationUser ApplicationUser { get; set; }
public string UserId { get; set; }
public virtual Record Record { get; set; }
}
}
RecordRepository.cs
public void SaveRecord(Record recordToSave) {
if (recordToSave.RecordId == 0) {
recordToSave.DateCreated = DateTime.Now;
_db.Record.Add(recordToSave);
_db.SaveChanges();
} else {
var original = this._db.Record.Find(recordToSave.RecordId);
original.Quantity = recordToSave.Quantity;
original.IsActive = true;
_db.SaveChanges();
}
}
CarsRepository.cs
public void SaveCar(Cars carToSave) {
if (carToSave.Id == 0) {
_db.Cars.Add(carToSave);
_db.SaveChanges();
} else {
var original = this.Find(carToSave.Id);
original.EmptyOrLoaded = carToSave.EmptyOrLoaded;
original.CarType = carToSave.CarType;
original.ShippedBy = carToSave.ShippedBy;
original.RailcarNumber = carToSave.RailcarNumber;
_db.SaveChanges();
}
}
您必須為您的汽車型號設置外鍵以獲取記錄ID。 只需在汽車模型中為RecordID添加另一列即可。
插入記錄后,您必須返回插入的ID並將此Record ID設置為汽車對象,然后再將其保存到數據庫中。
public void AddCars(int recordID, List<Cars> carsToSave) {
foreach(Cars car in carsToSave){
car.RecordID = recordID;
_db.Cars.Add(car);
}
_db.SaveChanges();
}
public void EditCars(List<Cars> carsToEdit){
foreach(Cars car in carsToEdit){
Cars editCar = this.Find(car.Id);
editCar.EmptyOrLoaded = car.EmptyOrLoaded;
editCar.CarType = car.CarType;
editCar.ShippedBy = car.ShippedBy;
editCar.RailcarNumber = car.RailcarNumber;
editCar.ApplicationUser = car.ApplicationUser;
editCar.UserId = car.UserId;
_db.SaveChanges();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.