diff --git a/Orm/Xtensive.Orm/Orm/Entity.cs b/Orm/Xtensive.Orm/Orm/Entity.cs index 4bfe6df57..8e8e1b4b4 100644 --- a/Orm/Xtensive.Orm/Orm/Entity.cs +++ b/Orm/Xtensive.Orm/Orm/Entity.cs @@ -654,14 +654,6 @@ internal override sealed void SystemGetValue(FieldInfo field, T value) } } - internal override sealed void SystemGetValueCompleted(FieldInfo field, T value, Exception exception) - { - Session.SystemEvents.NotifyFieldValueGetCompleted(this, field, value, exception); - using (Session.Operations.EnableSystemOperationRegistration()) { - Session.Events.NotifyFieldValueGetCompleted(this, field, value, exception); - } - } - internal override sealed void SystemSetValueAttempt(FieldInfo field, object value) { EnsureNotRemoved(); diff --git a/Orm/Xtensive.Orm/Orm/EntityFieldValueGetCompletedEventArgs.cs b/Orm/Xtensive.Orm/Orm/EntityFieldValueGetCompletedEventArgs.cs deleted file mode 100644 index 845281035..000000000 --- a/Orm/Xtensive.Orm/Orm/EntityFieldValueGetCompletedEventArgs.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (C) 2009-2022 Xtensive LLC. -// This code is distributed under MIT license terms. -// See the License.txt file in the project root for more information. -// Created by: Alexis Kochetov -// Created: 2009.10.22 - -using System; - -using Xtensive.Orm.Model; - -namespace Xtensive.Orm -{ - /// - /// Describes field reading completion events. - /// - public readonly record struct EntityFieldValueGetCompletedEventArgs(Entity Entity, FieldInfo Field, object Value, Exception Exception); -} \ No newline at end of file diff --git a/Orm/Xtensive.Orm/Orm/Persistent.cs b/Orm/Xtensive.Orm/Orm/Persistent.cs index c2e7bf7c2..df3fe2a71 100644 --- a/Orm/Xtensive.Orm/Orm/Persistent.cs +++ b/Orm/Xtensive.Orm/Orm/Persistent.cs @@ -185,18 +185,10 @@ protected internal T GetFieldValue(FieldInfo field) => protected internal T GetNormalizedFieldValue(FieldInfo field) { var fieldAccessor = GetNormalizedFieldAccessor(field); - T result = default(T); - try { - SystemBeforeGetValue(field); - result = fieldAccessor.GetValue(this); - SystemGetValue(field, result); - SystemGetValueCompleted(field, result, null); - return result; - } - catch (Exception e) { - SystemGetValueCompleted(field, result, e); - throw; - } + SystemBeforeGetValue(field); + var result = fieldAccessor.GetValue(this); + SystemGetValue(field, result); + return result; } /// @@ -211,18 +203,10 @@ protected internal object GetFieldValue(FieldInfo field) => private object GetNormalizedFieldValue(FieldInfo field, FieldAccessor fieldAccessor) { - object result = fieldAccessor.DefaultUntypedValue; - try { - SystemBeforeGetValue(field); - result = fieldAccessor.GetUntypedValue(this); - SystemGetValue(field, result); - SystemGetValueCompleted(field, result, null); - return result; - } - catch (Exception e) { - SystemGetValueCompleted(field, result, e); - throw; - } + SystemBeforeGetValue(field); + var result = fieldAccessor.GetUntypedValue(this); + SystemGetValue(field, result); + return result; } /// @@ -240,42 +224,36 @@ private object GetNormalizedFieldValue(FieldInfo field, FieldAccessor fieldAcces protected internal Key GetReferenceKey(FieldInfo field) { Key key = null; - try { - if (field.ReflectedType.IsInterface) - field = TypeInfo.FieldMap[field]; - SystemBeforeGetValue(field); - if (!field.IsEntity) - throw new InvalidOperationException( - String.Format(Strings.ExFieldIsNotAnEntityField, field.Name, field.ReflectedType.Name)); - - var types = Session.Domain.Model.Types; - var type = types[field.ValueType]; - var tuple = Tuple; - if (tuple.ContainsEmptyValues(field.MappingInfo)) - return null; - - int typeIdColumnIndex = type.Key.TypeIdColumnIndex; - var accuracy = TypeReferenceAccuracy.BaseType; - if (typeIdColumnIndex >= 0) - accuracy = TypeReferenceAccuracy.ExactType; - var keyValue = field.ExtractValue(tuple); - if (accuracy == TypeReferenceAccuracy.ExactType) { - int typeId = keyValue.GetValueOrDefault(typeIdColumnIndex); - if (typeId != TypeInfo.NoTypeId) // != default(int) != 0 - type = types[typeId]; - else - // This may happen if reference is null - accuracy = TypeReferenceAccuracy.BaseType; - } - key = Key.Create(Session.Domain, Session.StorageNodeId, type, accuracy, keyValue); - SystemGetValue(field, key); - SystemGetValueCompleted(field, key, null); - return key; - } - catch (Exception e) { - SystemGetValueCompleted(field, key, e); - throw; + if (field.ReflectedType.IsInterface) + field = TypeInfo.FieldMap[field]; + SystemBeforeGetValue(field); + if (!field.IsEntity) + throw new InvalidOperationException( + String.Format(Strings.ExFieldIsNotAnEntityField, field.Name, field.ReflectedType.Name)); + + var types = Session.Domain.Model.Types; + var type = types[field.ValueType]; + var tuple = Tuple; + if (tuple.ContainsEmptyValues(field.MappingInfo)) + return null; + + int typeIdColumnIndex = type.Key.TypeIdColumnIndex; + var accuracy = TypeReferenceAccuracy.BaseType; + if (typeIdColumnIndex >= 0) + accuracy = TypeReferenceAccuracy.ExactType; + var keyValue = field.ExtractValue(tuple); + if (accuracy == TypeReferenceAccuracy.ExactType) { + int typeId = keyValue.GetValueOrDefault(typeIdColumnIndex); + if (typeId != TypeInfo.NoTypeId) // != default(int) != 0 + type = types[typeId]; + else + // This may happen if reference is null + accuracy = TypeReferenceAccuracy.BaseType; } + + key = Key.Create(Session.Domain, Session.StorageNodeId, type, accuracy, keyValue); + SystemGetValue(field, key); + return key; } protected internal void SetReferenceKey(FieldInfo field, Key value) @@ -617,8 +595,6 @@ protected virtual void OnValidate() internal abstract void SystemGetValue(FieldInfo field, T value); - internal abstract void SystemGetValueCompleted(FieldInfo field, T value, Exception exception); - internal abstract void SystemSetValueAttempt(FieldInfo field, object value); internal abstract void SystemBeforeSetValue(FieldInfo field, object value); diff --git a/Orm/Xtensive.Orm/Orm/SessionEventAccessor.cs b/Orm/Xtensive.Orm/Orm/SessionEventAccessor.cs index 3a8a61319..6c9115461 100644 --- a/Orm/Xtensive.Orm/Orm/SessionEventAccessor.cs +++ b/Orm/Xtensive.Orm/Orm/SessionEventAccessor.cs @@ -145,11 +145,6 @@ public sealed class SessionEventAccessor /// public event EventHandler EntityFieldValueGet; - /// - /// Occurs when field value reading is completed. - /// - public event EventHandler EntityFieldValueGetCompleted; - /// /// Occurs when is field value is about to be set. /// This event is raised on any set attempt (even if new value is the same as the current one). @@ -411,12 +406,6 @@ internal void NotifyFieldValueGet(Entity entity, FieldInfo field, T value) EntityFieldValueGet(this, new EntityFieldValueEventArgs(entity, field, value)); } - internal void NotifyFieldValueGetCompleted(Entity entity, FieldInfo field, T value, Exception exception) - { - if (EntityFieldValueGetCompleted!=null && AreNotificationsEnabled()) - EntityFieldValueGetCompleted(this, new EntityFieldValueGetCompletedEventArgs(entity, field, value, exception)); - } - internal void NotifyFieldValueSettingAttempt(Entity entity, FieldInfo field, object value) { if (EntityFieldValueSettingAttempt!=null && AreNotificationsEnabled()) diff --git a/Orm/Xtensive.Orm/Orm/Structure.cs b/Orm/Xtensive.Orm/Orm/Structure.cs index ad58481c8..37154e2b5 100644 --- a/Orm/Xtensive.Orm/Orm/Structure.cs +++ b/Orm/Xtensive.Orm/Orm/Structure.cs @@ -203,14 +203,6 @@ internal override sealed void SystemGetValue(FieldInfo field, T value) Owner.SystemGetValue(ownerField, value); } - internal override sealed void SystemGetValueCompleted(FieldInfo field, T value, Exception exception) - { - if (Owner == null) - return; - var ownerField = Owner.TypeInfo.StructureFieldMapping[(Field, field)]; - Owner.SystemGetValueCompleted(ownerField, value, exception); - } - internal override sealed void SystemSetValueAttempt(FieldInfo field, object value) { if (!Session.IsSystemLogicOnly)