ObjectStateManager.TryGetObjectStateEntry 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试返回 ObjectStateEntry 特定对象或关系项的对象。
重载
| 名称 | 说明 |
|---|---|
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
尝试检索与指定EntityKey对象或关系对应的ObjectStateEntry对象或关系。 |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
尝试检索指定Object项的对应ObjectStateEntry项。 |
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)
尝试检索与指定EntityKey对象或关系对应的ObjectStateEntry对象或关系。
public:
bool TryGetObjectStateEntry(System::Data::EntityKey ^ key, [Runtime::InteropServices::Out] System::Data::Objects::ObjectStateEntry ^ % entry);
public bool TryGetObjectStateEntry(System.Data.EntityKey key, out System.Data.Objects.ObjectStateEntry entry);
member this.TryGetObjectStateEntry : System.Data.EntityKey * ObjectStateEntry -> bool
Public Function TryGetObjectStateEntry (key As EntityKey, ByRef entry As ObjectStateEntry) As Boolean
参数
- entry
- ObjectStateEntry
此方法返回时,包含给定EntityKey此参数的一个ObjectStateEntry未初始化传递。
返回
一个布尔值,该值为true给定的对应ObjectStateEntryEntityKey值;否则为 false。
例外
为 key 提供了 null (Visual Basic Nothing) 值。
示例
下面的示例尝试检索给定EntityKey的对应ObjectStateEntry项。
int orderId = 43680;
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
ObjectStateManager objectStateManager = context.ObjectStateManager;
ObjectStateEntry stateEntry = null;
var order = (from o in context.SalesOrderHeaders
where o.SalesOrderID == orderId
select o).First();
// Attempts to retrieve ObjectStateEntry for the given EntityKey.
bool isPresent = objectStateManager.TryGetObjectStateEntry(((IEntityWithKey)order).EntityKey, out stateEntry);
if (isPresent)
{
Console.WriteLine("The entity was found");
}
}
下面的示例使用 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) 返回 ObjectStateManager 的方法根据其实体键获取对象。
private static void ApplyItemUpdates(SalesOrderDetail originalItem,
SalesOrderDetail updatedItem)
{
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
context.SalesOrderDetails.Attach(updatedItem);
// Check if the ID is 0, if it is the item is new.
// In this case we need to chage the state to Added.
if (updatedItem.SalesOrderDetailID == 0)
{
// Because the ID is generated by the database we do not need to
// set updatedItem.SalesOrderDetailID.
context.ObjectStateManager.ChangeObjectState(updatedItem, System.Data.EntityState.Added);
}
else
{
// If the SalesOrderDetailID is not 0, then the item is not new
// and needs to be updated. Because we already added the
// updated object to the context we need to apply the original values.
// If we attached originalItem to the context
// we would need to apply the current values:
// context.ApplyCurrentValues("SalesOrderDetails", updatedItem);
// Applying current or original values, changes the state
// of the attached object to Modified.
context.ApplyOriginalValues("SalesOrderDetails", originalItem);
}
context.SaveChanges();
}
}
注解
用于 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) 返回一个 ObjectStateEntry ,而无需处理 InvalidOperationException 方法引发的 GetObjectStateEntry(EntityKey) 函数。
适用于
TryGetObjectStateEntry(Object, ObjectStateEntry)
尝试检索指定Object项的对应ObjectStateEntry项。
public:
bool TryGetObjectStateEntry(System::Object ^ entity, [Runtime::InteropServices::Out] System::Data::Objects::ObjectStateEntry ^ % entry);
public bool TryGetObjectStateEntry(object entity, out System.Data.Objects.ObjectStateEntry entry);
member this.TryGetObjectStateEntry : obj * ObjectStateEntry -> bool
Public Function TryGetObjectStateEntry (entity As Object, ByRef entry As ObjectStateEntry) As Boolean
参数
- entity
- Object
Object检索ObjectStateEntry到的所属位置。
- entry
- ObjectStateEntry
此方法返回时,包含 ObjectStateEntry 给定 EntityKey 此参数的传递未初始化。
返回
一个布尔值,如果 true 给定对象有相应的 ObjectStateEntry 值,则为 ;否则为 false。
注解
TryGetObjectStateEntry(Object, ObjectStateEntry)使用该方法可返回一个ObjectStateEntry,而无需处理InvalidOperationException该方法引发的GetObjectStateEntry(Object)函数。