View Full Version : سوال: پیاده سازی ObjectStateManager
mehri_ema
سه شنبه 25 مرداد 1390, 12:18 عصر
سلام
می خواستم بدونم کسی پیاده سازی ObjectStateManager رو می دونه؟ چطوری می شه ازش استفاده کرد هر چی Search کردم مطلب مفیدی پیدا نکردم.
رضا عربلو
چهارشنبه 26 مرداد 1390, 11:28 صبح
در EF وضعيت entity ها (ِDetached, attacged, modified, deleted, add , ...) و رابطه بين entity ها را مديريت مي کند.
mehri_ema
چهارشنبه 26 مرداد 1390, 12:46 عصر
مرسی از پاسخ گوییتون، اما من وقتی ازش استفاده به خطای زیر می خورم.
[The ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type [Table name
رضا عربلو
پنج شنبه 27 مرداد 1390, 10:37 صبح
کدتون را بگذاريد.
mehri_ema
شنبه 29 مرداد 1390, 12:40 عصر
System.Data.Objects.ObjectStateEntry x = _adoAccounting.ObjectStateManager.GetObjectStateEn try(data);
با تشکر
PetekDincos
شنبه 29 مرداد 1390, 21:53 عصر
با سلام
توی وبلاگ زیر در مورد ORM EF بحث های خوبی شده که در مورد ObjectStateManager هم مطلب وجود داره می تونه مفید باشه
http://alaasabzpoush.blogsky.com/
با تشکر
رضا عربلو
یک شنبه 30 مرداد 1390, 09:56 صبح
GetObjectStateEntries پارامتري از نوع System.Data.EntityKey مي گيرد. براي مثال براي بازگرداندن تغييرات اعمال شده بر روي entityها به صورت زير مي توان عمل کرد.
//reapire modified Rows
foreach (System.Data.Objects.ObjectStateEntry _ObjectStateEntry in _ObjectContext.ObjectStateManager.GetObjectStateEn tries(System.Data.EntityState.Modified))
{
if (_ObjectStateEntry.Entity.GetType().Equals(_Entity Type))
{
EntityObject _EntityObject = _ObjectStateEntry.Entity as EntityObject;
//ObjectStateEntry entry = DataProvider.GetContext.ObjectStateManager.GetObje ctStateEntry(entityObject.EntityKey);
ObjectStateEntry entry = _ObjectContext.ObjectStateManager.GetObjectStateEn try(_EntityObject.EntityKey);
for (int i = 0; i < entry.OriginalValues.FieldCount; i++)
{
//Filter Primary Keys, they may/cannot not be changed!
bool isIdentityField = false;
foreach (EntityKeyMember keyMember in entry.EntityKey.EntityKeyValues)
{
if (entry.CurrentValues.DataRecordInfo.FieldMetadata[i].FieldType.Name.Equals(keyMember.Key))
isIdentityField = true;
}
if (!isIdentityField)
entry.CurrentValues.SetValue(i, entry.OriginalValues[i]);
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.