Imports System.Runtime.CompilerServices Imports System.Linq.Expressions Imports Microsoft.EntityFrameworkCore Imports System.Data.Entity.Core.Objects Imports System.Data.Entity.Core Imports System.Reflection Imports Microsoft.EntityFrameworkCore.Infrastructure Imports Newtonsoft.Json Imports System.Formats 'Imports System.Data.Entity.Core.Objects 'Imports System.Data.Entity.Core.Objects Namespace Extensiones Public Module ObjetExtensions Public Function ObjetoNothingAVacio(ByVal Cadena As Object) As String If Cadena Is Nothing Then Return "" Else Return Cadena.ToString End If End Function ' 'Public Function GetDbContextFromEntity(ByVal entity As Object) As Data.Entity.DbContext ' Dim object_context = GetObjectContextFromEntity(entity) ' If object_context Is Nothing OrElse object_context.TransactionHandler Is Nothing Then Return Nothing ' Return object_context.TransactionHandler.DbContext 'End Function 'Private Function GetObjectContextFromEntity(ByVal entity As Object) As ObjectContext ' Dim field = entity.[GetType]().GetField("_entityWrapper") ' If field Is Nothing Then Return Nothing ' Dim wrapper = field.GetValue(entity) ' Dim [property] = wrapper.[GetType]().GetProperty("Context") ' Dim context = CType([property].GetValue(wrapper, Nothing), ObjectContext) ' Return context 'End Function ' 'Public Function ObtieneContexto(entity As Objects.DataClasses.EntityObject) As Objects.ObjectContext ' Dim relationshipManager = DirectCast(entity, Objects.DataClasses.IEntityWithRelationships).RelationshipManager ' Dim wrappedOwnerProperty = relationshipManager.GetType.GetProperty("WrappedOwner", Reflection.BindingFlags.Instance Or BindingFlags.NonPublic) ' Return wrappedOwnerProperty.GetValue(relationshipManager).Context 'End Function Function GetDbContext(Of T As Class)(ByVal dbSet As DbSet(Of T)) As DbContext Dim infrastructure = TryCast(dbSet, IInfrastructure(Of IServiceProvider)) Dim serviceProvider = infrastructure.Instance Dim currentDbContext = TryCast(serviceProvider.GetService(GetType(ICurrentDbContext)), ICurrentDbContext) Return currentDbContext.Context End Function Function Clonar(Of T)(ByVal self As T) As T Dim serialized = JsonConvert.SerializeObject(self) Return JsonConvert.DeserializeObject(Of T)(serialized) End Function Sub CopiarPropiedadesDe(Of T)(ByVal Destino As T, ByVal Origen As T) Dim props = Destino.GetType.GetProperties.Where(Function(x) x.CanWrite).ToList For Each p In props p.SetValue(Destino, Origen.GetType.GetProperty(p.Name).GetValue(Origen)) Next End Sub ' 'Function ObtieneContexto(Of T As Class)(ByVal Objeto As T) As DbContext ' Dim infrastructure = TryCast(Objeto, IInfrastructure(Of IServiceProvider)) ' Dim serviceProvider = infrastructure.Instance ' Dim currentDbContext = TryCast(serviceProvider.GetService(GetType(ICurrentDbContext)), ICurrentDbContext) ' Return currentDbContext.Context 'End Function End Module End Namespace