【发布时间】:2019-03-06 20:37:33
【问题描述】:
我有一个名为 Driver 的模型,其中包含一个“DriverQualifications”列表,并且在更新时我想添加/删除/更新当前 DriverQualifications 的值。
我目前尝试通过首先清除列表并读取所有元素来更新:
public void UpdateOne(Driver val)
{
using (var db = new COMP1690Entities())
{
Driver d = db.Drivers.Where((dr) => dr.Id == val.Id).Include("DriverQualifications.Qualification").FirstOrDefault();
d.DriverQualifications.Clear();
foreach (DriverQualification q in val.DriverQualifications)
{
q.Fk_Qualifications_Id = q.Qualification.Id;
q.Qualification = null;
d.DriverQualifications.Add(q);
}
d.Phone_Number = val.Phone_Number;
db.SaveChanges();
}
}
这会导致“违反多重性约束”。关系“COMP1690Model.DriverQualifications_ibfk_1”的角色“驱动程序”具有多重性 1 或 0..1。
我如何向数据库添加值:
public void CreateOne(Driver val)
{
using (var db = new COMP1690Entities())
{
foreach(DriverQualification q in val.DriverQualifications)
{
q.Fk_Qualifications_Id = q.Qualification.Id;
q.Qualification = null;
}
db.Drivers.Add(val);
db.SaveChanges();
}
}
驱动器型号:
public partial class Driver
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Driver()
{
this.DriverQualifications = new HashSet<DriverQualification>();
this.DriverTrainings = new HashSet<DriverTraining>();
}
public int Id { get; set; }
public string Phone_Number { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<DriverQualification> DriverQualifications { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<DriverTraining> DriverTrainings { get; set; }
}
DriverQualification 模型:
public partial class DriverQualification
{
public int Id { get; set; }
public Nullable<System.DateTime> Expiry_Date { get; set; }
public int Fk_Driver_Id { get; set; }
public int Fk_Qualifications_Id { get; set; }
public virtual Driver Driver { get; set; }
public virtual Qualification Qualification { get; set; }
}
【问题讨论】:
标签: c# entity-framework entity-framework-6