当前位置: 首页 > 编程语言 > C#

dbcontext.Add和dbcontext.AddObject有什么区别分享

时间:2023-04-10 12:55:14 C#

dbcontext.Add和dbcontext.AddObject有什么区别我是WPF初学者。我想知道dbcontext.Add和dbcontext.AddObject之间的dbcontext.AddObject。privatevoidAddButton_Click(objectsender,RoutedEventArgse){Nameemployee=newName();employee.Name1="测试";dataContext.Names.AddObject(员工);我想实现这个dbcontext.AddObject()。但是我得到一个错误:“System.Data.Entity.DbSet”不包含“AddObject”的定义,并且找不到接受“System.Data.Entity.DbSet”类型的第一个参数的扩展方法“AddObject”(您是否缺少using指令)或程序集引用?)C:DocumentsVisualStudio2012ProjectsWpfApplication9WpfApplication9MainWindow.xaml.cs4931WpfApplication9`也建议哪个更好。谢谢。其实你说的是老ObjectContext使用的ObjectSet类的AddObject方法。但是,从EntityFramework4开始,我们有了DbContext类(它是旧ObjectContext的包装器)。这个新类使用DbSet而不是旧的ObjectSet。新的set类具有Add方法。那么,回到差异。旧实现调用ObjectContextAddObject方法:publicvoidAddObject(TEntityentity){Context.AddObject(FullyQualifiedEntitySetName,entity);}新的实现做了同样的事情(见动作参数):,实体),EntityState.Added,实体,"添加");如您所见,内部调用了相同的ObjectContext.AddObject方法。发生了什么变化-之前我们只是将实体添加到上下文中,但现在如果ObjectStateManager中存在状态条目,那么我们只需将条目状态更改为已添加:if(InternalContext.ObjectContext.ObjectStateManager.TryGetObjectStateEntry(entity,outentry)){entry.ChangeState(newState);//只是改变状态}else{action();//调用ObjectContext.AddObject}新API的主要目标是使DbContext更易于使用。在ObjectContext上调用AddObject以将对象添加到对象上下文。当对象是新对象并且在数据源中尚不存在时执行此操作。在对象上下文中创建与另一个对象相关的新对象时,使用以下方法之一添加该对象:调用EntityCollection的Add方法并指定相关对象。它的缺点似乎是它们大致相同。我发现这篇博文有点短:http://blog.cincura.net/232485-someentityset-addobject-vs-addtosomeentityset-methods/您也可以查看MSDN,但在这种特殊情况下我发现它有点神秘。http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.addobject.aspx您的错误表明该方法不可用。我发现当您切换到新版本的EntityFramework时会发生这种情况。您需要传递和更改对我们的所有方法调用如果您有一些核心原因想要使用AddObject那么请更详细地解释您的需求以便有人可以更好地帮助您。以上就是C#学习教程的全部内容:dbcontext.Add和dbcontext.AddObject有什么区别?,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: