2012-04-08 3 views
1

In meinem Code First-Datenmodell, das in meinen Ansichtsmodellen Guid? zugeordnet wird, habe ich mehrere nicht NULL-fähige GUID-Eigenschaften. Ich habe keine Verwendung für die leere GUID (alle Nullen), also verwende ich die folgenden Abbildungen, aber ich kann nicht umhin, sich zu fragen, ob es einen besseren Weg gibt, dies zu tun? Die unerforschten Tiefen der AutoMapper-Konfiguration würden Jahre dauern, um alles alleine zu erkunden.Gibt es eine bessere Möglichkeit für AutoMapper, von einer leeren GUID als eine explizite CreateMap zu konvertieren?

Mapper.CreateMap<Guid, Guid?>().ConvertUsing(guid => guid == Guid.Empty ? (Guid?)null : guid); 
Mapper.CreateMap<Guid?, Guid>().ConvertUsing(guid => !guid.HasValue ? Guid.Empty : guid.Value); 
+0

einen Konverter benutzerdefinierten Typ erstellen. https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters –

+0

Meine Lambda-Ausdrücke sind im Wesentlichen "implizite" Typ Konverter-Funktionen. Der obige Code wird nur einmal pro ASP.NET-Anforderung aufgerufen und gilt daher für alle Guid/Nullable -Zuordnungen. – ProfK

+0

Nicht sicher, was "besser" dann wäre. –

Antwort

1

Erstellen Sie einen benutzerdefinierten Typkonverter.

https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters

public class NullableByteToNullableIntConverter : ITypeConverter<Byte?, Int32?> 
    { 
     public Int32? Convert(ResolutionContext context) 
     { 
      return context.IsSourceValueNull ? (int?) null : System.Convert.ToInt32(context.SourceValue); 
     } 
    } 

Dann:

Mapper.CreateMap<byte?, int?>().ConvertUsing<NullableByteToNullableIntConverter>(); 
Verwandte Themen