LINQ One-to-Zero-or-One不会更新记录

时间:2014-08-18 23:12:45

标签: c# asp.net asp.net-mvc linq entity-framework

我正在尝试使用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都有效。

0 个答案:

没有答案