1 //---------------------------------------------------------------------
2 // <copyright file="ObjectStateEntryDbUpdatableDataRecord.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
10 using System.ComponentModel;
12 using System.Data.Common;
13 using System.Data.Metadata.Edm;
14 using System.Data.Objects;
15 using System.Diagnostics;
16 using System.Reflection;
18 namespace System.Data.Objects
20 internal sealed class ObjectStateEntryDbUpdatableDataRecord : CurrentValueRecord
22 internal ObjectStateEntryDbUpdatableDataRecord(EntityEntry cacheEntry, StateManagerTypeMetadata metadata, object userObject)
23 : base(cacheEntry, metadata, userObject)
25 EntityUtil.CheckArgumentNull(cacheEntry, "cacheEntry");
26 EntityUtil.CheckArgumentNull(userObject, "userObject");
27 EntityUtil.CheckArgumentNull(metadata, "metadata");
28 Debug.Assert(!cacheEntry.IsKeyEntry, "Cannot create an ObjectStateEntryDbUpdatableDataRecord for a key entry");
29 switch (cacheEntry.State)
31 case EntityState.Unchanged:
32 case EntityState.Modified:
33 case EntityState.Added:
36 Debug.Assert(false, "A CurrentValueRecord cannot be created for an entity object that is in a deleted or detached state.");
40 internal ObjectStateEntryDbUpdatableDataRecord(RelationshipEntry cacheEntry)
43 EntityUtil.CheckArgumentNull(cacheEntry, "cacheEntry");
44 switch (cacheEntry.State)
46 case EntityState.Unchanged:
47 case EntityState.Modified:
48 case EntityState.Added:
51 Debug.Assert(false, "A CurrentValueRecord cannot be created for an entity object that is in a deleted or detached state.");
55 protected override object GetRecordValue(int ordinal)
57 if (_cacheEntry.IsRelationship)
59 return (_cacheEntry as RelationshipEntry).GetCurrentRelationValue(ordinal);
63 return (_cacheEntry as EntityEntry).GetCurrentEntityValue(_metadata, ordinal, _userObject, ObjectStateValueRecord.CurrentUpdatable);
66 protected override void SetRecordValue(int ordinal, object value)
68 if (_cacheEntry.IsRelationship)
70 // Cannot modify relation values from the public API
71 throw EntityUtil.CantModifyRelationValues();
75 (_cacheEntry as EntityEntry).SetCurrentEntityValue(_metadata, ordinal, _userObject, value);