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插入值,并且在我的示例中都是相同的。我很确定在某些情况下,其中一个可以工作,另一个不能。
谁能解释一下这两者的区别?谢谢
AddTo<TEntity>
方法现在被认为已弃用,并且已与EF4
和以前的版本一起使用。在EF4.x
中,新的AddObject()
被引入作为AddTo<TEntity>
的替代方法,但由于某些(未知)原因,AddTo<TEntity>
方法仍然可用,即使建议使用新的AddObject()
方法。到目前为止,对于EF5+
,您可以只使用Add()
。很难找到替换方法的确切原因,但我猜这很可能是历史原因,随着EF
的发展,这些方法被改变以反映新版本。
所以如果你考虑为什么(如果在任何情况下)一个比另一个好,而不是只使用最常见的一个(当然,如果你没有一些版本限制,比如,如果你正在使用EF 4)。否则你不会获得任何东西,通常在一些方法被标记为弃用后,它迟早会被删除,所以如果你使用AddTo<TEntity>
,你可能需要重写你的部分代码,因为在一些未来的版本中,这个方法不再出现。