ObjectContext.TryGetObjectByKey(EntityKey, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回具有指定实体键的对象。
public:
bool TryGetObjectByKey(System::Data::EntityKey ^ key, [Runtime::InteropServices::Out] System::Object ^ % value);
public bool TryGetObjectByKey (System.Data.EntityKey key, out object value);
member this.TryGetObjectByKey : System.Data.EntityKey * obj -> bool
Public Function TryGetObjectByKey (key As EntityKey, ByRef value As Object) As Boolean
参数
- key
- EntityKey
要查找的对象的键。
- value
- Object
在此方法返回时包含对象。
返回
如果成功检索到对象,则为 true
。 如果 key
是临时的,或者连接为 false
,或 value
为 null
,则为 null
。
例外
key
的元数据不兼容。
key
为 null
。
示例
此示例为给定类型的实体创建 , EntityKey 然后尝试按键检索实体。
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
Object entity = null;
IEnumerable<KeyValuePair<string, object>> entityKeyValues =
new KeyValuePair<string, object>[] {
new KeyValuePair<string, object>("SalesOrderID", 43680) };
// Create the key for a specific SalesOrderHeader object.
EntityKey key = new EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues);
// Get the object from the context or the persisted store by its key.
if (context.TryGetObjectByKey(key, out entity))
{
Console.WriteLine("The requested " + entity.GetType().FullName +
" object was found");
}
else
{
Console.WriteLine("An object with this key " +
"could not be found.");
}
}
注解
TryGetObjectByKey 尝试从 EntityKey 检索具有指定 ObjectStateManager 的对象。 如果该对象当前尚未加载到对象上下文中,则会执行查询以尝试从数据源返回该对象。 有关详细信息,请参阅对象查询。
使用 TryGetObjectByKey 方法可避免处理在无法找到对象时由 ObjectNotFoundException 引发的 GetObjectByKey。
此方法将返回状态为 Deleted 的对象。
临时键无法用于从数据源返回对象。
方法TryGetObjectByKey为 GetObjectByKey 方法应用标准 .NET TryParse
模式,在捕获 时ObjectNotFoundException返回 false
。