日期:2014-05-20  浏览次数:20920 次

在DbContext中更新数据问题,在线等
public class Corporation
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int cid { get; set; }
        public string cName { get; set; }


    }

public class Dept
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int dId { get; set; }
        [Required]
        public string dName { get; set; }
        public Corporation corporation { get; set; }
    }

现在我要更新一个dept对象,但dept对象中的Corporation与dept来自不同的dbcontext,这时候就会报错:“更新条目时发生异常”

请问高人如何解决?
------解决方案--------------------
用Attach更新试一下.
------解决方案--------------------
引用:
用Attach更新试一下.


换了Attach方法后更新,数据没变。。。。
------解决方案--------------------
更新数据时,两个对象来自不同的DBCONTEXT的问题可以解决,但又有新的问题,我现在更新DEPT对象时,同时更新了DEPT对象中的Corporation,但Corporation的值没有更新成功,也没有报错,是虾米回事?
------解决方案--------------------
哎,晕死。这两天一直在研究这个EF 和 DBCONTEXT对象,越来越觉得很烂,当然也许是我的技术太烂,我想更多是后者吧。

希望有研究明白的人告诉我一下,当我要更新或添加一个对象时,这个对象关联的外(主)键对象与当前对象不是来自同一个DBCONTEXT,应该如何操作?
难道必须在实体中去掉这种关联关系,使用ID来标识,然后在程序中进行管理吗?那这样的话,我用EF干嘛?难道只是省去了维护数据库的过程?
------解决方案--------------------
引用:
哎,晕死。这两天一直在研究这个EF 和 DBCONTEXT对象,越来越觉得很烂,当然也许是我的技术太烂,我想更多是后者吧。

希望有研究明白的人告诉我一下,当我要更新或添加一个对象时,这个对象关联的外(主)键对象与当前对象不是来自同一个DBCONTEXT,应该如何操作?
难道必须在实体中去掉这种关联关系,使用ID来标识,然后在程序中进行管理吗?那这样的话,我用EF干嘛?难道只是省去了维护数……

能否将两个DataContext对象放到一个事务当中来处理,你可以尝试一下。
------解决方案--------------------
db.tmodel.Attach(model);
db.Entry<tmodel>(model).State = System.Data.EntityState.Modified;
db.SaveChanges();
前台页面传回一个model,先附加后设置Modified,这步一定要,我也搞了很久,网上的都说不清楚