簡體   English   中英

如何從單獨的視圖發布一對多關系?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM