0

我是 MVC 框架的新手。我正在使用 MVC 4 beta,现在遇到了一些麻烦。我用谷歌搜索了很多,但找不到解决我的问题的方法,所以在这里我希望有人能提供帮助。我的问题是我有两个数据库

   Database1 db1=new Database1();
   Database2 db2=new Database2();

   tbl1 tb1=new tbl1(); /// from db1
   tbl2 tb2=new tbl2(); // from db2

两个表具有相同的属性,除了在 db2 中不包含任何属性的任何关系。

这是我的代码

   public bool Save(int id=0){
   tb1 = db1.tbl1.Single(tr => tr.id == id);

   tb2.a=tb1.a;
   tb2.b=tb1.b;
   tb2.c=tb1.c;
   tb2.d=tb1.d;
   tb2.e=tb1.e;

    if (db2.tbl1.SingleOrDefault(tr => tr.rid == id) == null)
            {
                db2.tbl1.AddObject(tb2); /// This works perfectly fine
            }
            else
            {

                db2.tbl1.Attach(tb2); /// This gives me an error Object Reference does not set to an instance of an object 
                db2.ObjectStateManager.ChangeObjectState(tb2, EntityState.Modified);

            }
            db2.SaveChanges();
   }

有趣的是,我在另一个控制器上使用了相同的方法,它的工作原理就像一个魅力。任何建议为什么会发生以及如何解决它都会非常有帮助。

谢谢

4

1 回答 1

0

我用谷歌搜索了很多,并在 MSDN 上找到了解决方案。这是我如何解决我刚刚删除该行的问题

    db2.tbl1.Attach(tb2);

它就像一个魅力。

这是对这里发生的事情的一些解释,当我在 DB 中搜索记录是否存在时,如果它存在,那么它会自动附加到 DBcontext,因此您只需像这样更改 DB 的状态

    db2.ObjectStateManager.ChangeObjectState(tb2, EntityState.Modified);

并保存记录。

    db2.SaveChanges();

如果在数据库中没有找到记录,那么您必须将新的 dbcontext 添加到 db2 作为 db2.AddObject(tb2);

并保存记录。

我希望这会对某人有所帮助。

里亚萨特

于 2012-04-20T10:34:23.993 回答