• Webseitenerstellung und -hosting
  • .NET Anwendungsentwicklung
  • softwaregesteuerte Prozessoptimierung
  • .NET

    Programmierung

  • WebseitenErstellung

    undHosting

  • softwaregesteuerte

    Prozessoptimierung

  • Konzeption

    und Beratung

%AM, %05. %504 %2013 %11:%Jul

Entitäten klonen und vergleichen mit dem Entity Framework 4

geschrieben von
Artikel bewerten
(0 Stimmen)
Da solche Funktionen erst mit EF5 bzw. .NET 4.5 halbwegs vernünftig zur Verfügung stehen ("AsNoTracking") hier eine Möglichkeit um Entitäten zu klonen (als Extension :-))

;
Public Function Clone(Of t As EntityObject)(entity As t, ctx As oraEntities, Optional copyKeys As Boolean = True) As t
Try
Dim cloneE As t = ctx.CreateObject(Of t)()
Dim pis As PropertyInfo() = entity.GetType.GetProperties()

For Each pi As PropertyInfo In pis
Dim attrs As EdmScalarPropertyAttribute() = DirectCast(pi.GetCustomAttributes(GetType(EdmScalarPropertyAttribute), False), EdmScalarPropertyAttribute())

For Each attr As EdmScalarPropertyAttribute In attrs
If Not copyKeys AndAlso attr.EntityKeyProperty Then
Continue For
End If
'Strung und NULL abfangen, wird trotz Standardwert im SQL Server nicht imgesetzt
Dim objVal As Object
If pi.PropertyType = GetType(String) And pi.GetValue(entity, Nothing) Is Nothing Then
objVal = ""
Else
objVal = pi.GetValue(entity, Nothing)
End If
pi.SetValue(cloneE, objVal, Nothing)
Next
Next
Return cloneE
Catch ex As Exception
Throw ex
End Try
End Function


und zu vergleichen


;
Public Function Compare(Of t As EntityObject)(entityOriginal As t, entityCopy As t) As Boolean
Try
'Um Änderungen einer Entität festzustellen (t.equals funktioniert aufgrund der Abhängigkeiten mit anderen Tabellen nicht)
Dim pisOrig As PropertyInfo() = entityOriginal.GetType.GetProperties()

For Each piOrig As PropertyInfo In pisOrig
Dim attrs As EdmScalarPropertyAttribute() = DirectCast(piOrig.GetCustomAttributes(GetType(EdmScalarPropertyAttribute), False), EdmScalarPropertyAttribute())
If attrs.Count > 0 Then 'Fremdschlüsseltabellen ausschliessen
Dim objOrig As Object = If(GetType(t).GetProperty(piOrig.Name).GetValue(entityOriginal, Nothing) Is Nothing, "", GetType(t).GetProperty(piOrig.Name).GetValue(entityOriginal, Nothing))
Dim objCopy As Object = If(GetType(t).GetProperty(piOrig.Name).GetValue(entityCopy, Nothing) Is Nothing, "", GetType(t).GetProperty(piOrig.Name).GetValue(entityCopy, Nothing))
If Not objOrig.Equals(objCopy) Then
Return False
End If
End If
Next

Return True
Catch ex As Exception
Throw ex
End Try
End Function


Verknüfte Tabellen werden dabei allerdings nicht übernommen!		
Gelesen 38137 mal Letzte Änderung am %PM, %24. %643 %2015 %14:%Jun

190 Kommentare

  • Kommentar-Link USA_pn %PM, %18. %580 %2024 %12:%Apr gepostet von USA_pn

    Теплица от производителя распродажа.
    Прямостенные теплицы от производителя купить.
    Теплица с доставкой от производителя цена.
    Большие теплицы из поликарбоната цена.
    Купить теплицу из трубы.
    Теплицы производство.

  • Kommentar-Link букмекер bgPl %PM, %17. %776 %2024 %17:%Apr gepostet von букмекер bgPl

    Как узнать рейтинг букмекера на спорт
    букмекерская контора букмекерские приложения .

  • Kommentar-Link букмекер muPl %PM, %17. %600 %2024 %13:%Apr gepostet von букмекер muPl

    Букмекерские конторы: топ рейтинга
    лучшая букмекерская онлайн официальные сайты букмекерских контор .

  • Kommentar-Link casino onPn %PM, %16. %946 %2024 %21:%Apr gepostet von casino onPn

    Toda la emocion de los casinos en linea en Peru
    mejor casino online peru mejor casino online peru .

  • Kommentar-Link casino mwPn %PM, %16. %920 %2024 %21:%Apr gepostet von casino mwPn

    ?Buscas diversion? ?Prueba los casinos en linea de Peru!
    mejor casino online peru mejor casino online peru .

  • Kommentar-Link USA_pn %AM, %16. %480 %2024 %10:%Apr gepostet von USA_pn

    Качественные теплицы от производителя.
    Купить теплицу с установкой.
    Большие теплицы из поликарбоната.
    Купить небольшую теплицу.
    Усиленные теплицы цена.
    Купить теплицу 2 3.

  • Kommentar-Link USA_pn %AM, %10. %304 %2024 %06:%Apr gepostet von USA_pn

    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.
    vc.ru.

  • Kommentar-Link  amplificador de senal movil %AM, %10. %247 %2024 %04:%Apr gepostet von amplificador de senal movil

    Amplificadores de senal gsm
    Haz que tu movil funcione como nunca con un amplificador de senal de calidad
    https://clinfowiki.win/wiki/User:NeilLopez23

  • Kommentar-Link  repetidores gsm %PM, %09. %812 %2024 %18:%Apr gepostet von repetidores gsm

    Amplificadores de senal gsm
    Mejora la cobertura de tu movil con un amplificador de senal
    https://gravatar.com/neillopez23

  • Kommentar-Link  amplificadores gsm %PM, %09. %760 %2024 %17:%Apr gepostet von amplificadores gsm

    Amplificadores de senal gsm
    Adquiere un amplificador de senal para moviles y olvidate de los cortes
    https://moparwiki.win/wiki/User:NeilLopez23

Schreibe einen Kommentar

Bitte achten Sie darauf, alle Felder mit Stern * zu füllen. HTML-Code ist nicht erlaubt.