AddObject和AddToMyTable(特定表名)之间有什么区别?

时间:2014-03-21 15:54:25

标签: c# entity-framework

我是MVC 4和Entity-Framework的新手

如果这个问题没有意义,请让我解释一下。

在我正在处理的示例中,我注意到我可以使用AddObject或AddToMyTableName插入数据库。(我的特定表名存在于数据库中)

所以我有点困惑这些之间的区别是什么? 在哪些情况下我应该使用哪一个?

这是一个非常简化的例子:

在控制器中:

这是AddObject的示例:

using (myProj.Models.myProjEntities db = new Models.myProjEntities())
  {
      myProj.Models.TestClass myTestClass = new myProj.Models.TestClass();
      myTestClass.prop1 = "test1";
      myTestClass.prop2 = "test2";

      db.MyTable.AddObject(myTestClass);
      db.SaveChanges();
  }

以下是AddToSpecificTable的示例:

using (myProj.Models.myProjEntities db = new Models.myProjEntities())
  {
      myProj.Models.TestClass myTestClass = new myProj.Models.TestClass();
      myTestClass.prop1 = "test1";
      myTestClass.prop2 = "test2";

      db.AddToMyTable(myTestClass);
      db.SaveChanges();
  }

它们都将值插入db,并且两者在我的示例中都是相同的。我很确定有些情况下,其中一个正在工作,另一个则没有。

任何人都可以解释一下这个区别吗?

由于

1 个答案:

答案 0 :(得分:1)

AddTo<TEntity>方法现在被视为已弃用,并已与EF4及之前版本一起使用。使用EF4.x时,新AddObject()被引入作为AddTo<TEntity>的替换方法,但由于某些(未知)原因AddTo<TEntity>方法仍然可用,即使建议使用新方法AddObject()方法。截至目前,使用EF5+即可使用Add()。很难找到更换方法的确切原因,但我想这很可能是历史原因,随着EF的发展,所以方法被改变以反映新版本。

因此,如果你考虑为什么(如果在任何情况下)一个比另一个更好,而不仅仅使用最常见的一个(当然如果你没有一些版本限制,如果你使用EF 4例)。否则你没有获得任何东西,通常在某些方法被标记为被弃用之前或之后它被删除,所以如果你使用AddTo<TEntity>,你可能需要重写部分代码,因为在将来的某个版本中这个方法已不再出现。