C# TryGetObjectByKey未在.net 4.5中编译
我有下面的代码,它在保存.NET4/EF4项目中分离的对象方面做得非常好。我想在一个新的.NET4.5/EF5项目中使用该代码。我复制了它,现在它给了我一个编译错误: “MyEntities不包含'TryGetObjectByKey'的定义,并且找不到接受MyEntities类型的第一个参数的扩展方法'TryGetObjectByKey'(是否缺少using指令或程序集引用?) 据称,它位于引用的System.Data.Entity程序集(.dll)的System.Data.Objects命名空间中(因此我有一个用于它的名称)C# TryGetObjectByKey未在.net 4.5中编译,c#,.net,entity-framework,C#,.net,Entity Framework,我有下面的代码,它在保存.NET4/EF4项目中分离的对象方面做得非常好。我想在一个新的.NET4.5/EF5项目中使用该代码。我复制了它,现在它给了我一个编译错误: “MyEntities不包含'TryGetObjectByKey'的定义,并且找不到接受MyEntities类型的第一个参数的扩展方法'TryGetObjectByKey'(是否缺少using指令或程序集引用?) 据称,它位于引用的System.Data.Entity程序集(.dll)的System.Data.Objects命名空
public bool UpdateChanged(IEntityWithKey DetachedObject = null) {
bool Result = false;
try {
using (MyEntities db = new MyEntities()) {
if (DetachedObject != null) {
object Original = null;
if (db.TryGetObjectByKey(DetachedObject.EntityKey, out Original))
db.ApplyCurrentValues(DetachedObject.EntityKey.EntitySetName, DetachedObject);
} // if they want to Update an Entity
db.SaveChanges();
Result = true;
} // using the database
} catch (Exception e) {
} // try-catch
return Result;
} // UpdateChanged - Method
根据这一链接,它应该起作用:
你能帮忙吗
更新/解决方案:
根据@Rowan下面的回答,我简单地将我的Save方法修改为如下内容,而不是创建一个接受分离对象的UpdateChanged方法:
using (MyEntities db = new MyEntities()) {
if (o.ID > 0) {
// Existing Owner
db.Owners.Attach(o);
db.Entry(o).State = EntityState.Modified;
db.Entry(o.Address).State = EntityState.Modified;
} else {
// New Owner
db.Owners.Add(o);
} // if this is a New Owner
db.SaveChanges();
} // using the database
TryGetObjectByKey是ObjectContext上的一个方法。从VisualStudio2012开始,默认情况下,新模型将生成基于DbContext的上下文(DbContext被设计为更简单、更直观的API界面)。现有模型将继续生成ObjectContext,除非您选择切换到DbContext。您还可以为新型号提供支持
始终可以使用((IObjectContextAdapter)db.ObjectContext.TryGetObjectByKey(…)获取底层ObjectContext。TryGetObjectByKey是ObjectContext上的一个方法。从VisualStudio2012开始,默认情况下,新模型将生成基于DbContext的上下文(DbContext被设计为更简单、更直观的API界面)。现有模型将继续生成ObjectContext,除非您选择切换到DbContext。您还可以为新型号提供支持
始终可以使用((IObjectContextAdapter)db获取底层ObjectContext。ObjectContext.TryGetObjectByKey(…)。是
MyEntities
的子类ObjectContext
?MyEntities
(类型db
)被视为第一个参数,所以这看起来像是一个扩展方法,为了让Brian的问题更清楚,MyEntities是从ObjectContext还是DbContext派生的?你能展示一下它的样子吗?@BrianRasmussen,MyEntities是从DbContext派生出来的。MyEntities
是ObjectContext
的子类吗?MyEntities
(db的类型)被视为第一个参数,所以这看起来像是一个扩展方法,为了让Brian的问题更清楚,MyEntities是从ObjectContext还是DbContext派生的?你能展示一下它的样子吗?@BrianRasmussen,MyEntities是从DbContext派生出来的。谢谢你@Rowan,成功了。有了这个新的DbContext,有没有更好/不同的方法来连接断开连接的对象?谢谢@Rowan,这就成功了。有了这个新的DbContext,有没有更好/不同的方法来连接断开连接的对象?