adddobject和AddToMyTable(具体表名)的区别是什么?

本文关键字:区别 是什么 AddToMyTable adddobject | 更新日期: 2023-09-27 17:51:12

我是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插入值,并且在我的示例中都是相同的。我很确定在某些情况下,其中一个可以工作,另一个不能。

谁能解释一下这两者的区别?

谢谢

adddobject和AddToMyTable(具体表名)的区别是什么?

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

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