我正在尝试使用LINQ更新我的数据库,即一对一或一。 (我先使用代码)。该行" System.Diagnostics.Debug.Write(等待databaseConn.SaveChangesAsync());"返回值0而不是1。
它应该返回1,因为我正在更新currentTruck的SOG,如此" currentTruck.Sog = newSog;"
详情
DATABASES:TRUCK& SOG
情景:卡车有一个SOG项目,每辆卡车应该只有一个SOG项目,而且一些SOG没有PARENT,换句话说我可以拥有:卡车 - >与SOG&卡车 - > WITHOUT SOG& SOG->带卡车& SOG - >没有卡车。 卡车模型
[Key]
[Required]
[Display(Name = "Truck ID")]
public string truck_id { get; set; }
[Required]
[StringLength(10)]
[Display(Name = "REGO")]
public string truck_Rego { get; set; }
public int? subc_id { get; set; }
public virtual Subcontractor Subcontractor { get; set; }
public virtual Sog Sog { get; set; }
public virtual ICollection<TruckServices> TruckServices { get; set; }
SOG模型
[Key, ForeignKey("Truck")]
public string truck_id { get; set; }
[Required]
public string sog_serialNumber { get; set; }
public virtual Truck Truck { get; set; }
我需要从卡车上移除当前的SOG项目并添加来自另一辆卡车的新SOG项目,换句话说,TRUCK A有SOG 1而TRUCK B有SOG 2,我需要移除连接TRUCK B&amp; SOG 2,并删除TRUCK A&amp; A之间的连接。 SOG 1和ADD之后的TRUCK A与SOG 2之间的连接。
我已经使用过本教程(http://www.entityframeworktutorial.net/EntityFramework4.3/update-one-to-one-entity-using-dbcontext.aspx),但它不起作用,而且我已尝试过以下代码,但没有任何变化。
public async Task<ActionResult> truckAccount_SOG(string id, string _sog_IMEI)
{
Truck currentTruck = await databaseConn.Trucks.FirstOrDefaultAsync(r=> r.truck_Rego.Equals(id));
Sog currentSog = await databaseConn.Sogs.FirstOrDefaultAsync(r=> r.truck_id.Equals(currentTruck.truck_id));
Sog newSog = await databaseConn.Sogs.FirstOrDefaultAsync(r=> r.sog_IMEI.Equals(_sog_IMEI));
databaseConn.Entry(currentTruck).State = EntityState.Modified;
databaseConn.Entry(currentTruck).State = EntityState.Detached;
databaseConn.Entry(currentSog).State = EntityState.Detached;
databaseConn.Entry(newSog).State = EntityState.Detached;
currentTruck.Sog = newSog;
System.Diagnostics.Debug.Write(await databaseConn.SaveChangesAsync());
return null;
}
这种关系是否正确?
如何更新此记录?
有没有人有关于如何使用保存/更新的任何示例?我找到了一对一或一个有效的方法
PS:我没有检查Null Exception,因为我只是测试并且所有的vars都有效。