0

Angenommen, ich habe die folgende Klassenstruktur:Auto-Mapping 00.59 Fremdschlüssel in asp.net vorformulierten

public class Pizza 
{ 
    public int Id { get; set; } 
    public virtual PizzaType PizzaType { get; set; } 
} 

public class PizzaType 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

Nun, ich brauche eine DTO-Klasse, so kann ich auf die Benutzeroberfläche zum Bearbeiten ein Objekt übergeben, und dann an den Dienst zurückgeben zum Speichern in der Datenbank. Also:

[AutoMap(typeof(Pizza))] 
public class PizzaEdit 
{ 
    public int Id { get; set; } 
    public int PizzaTypeId { get; set; } 
} 

Das Ziel ist, zwischen Pizza und PizzaEdit so leicht wie möglich abzubilden, so dass es in der Benutzeroberfläche bearbeitet werden können und wieder in der Datenbank gespeichert. Vorzugsweise wird dies "einfach funktionieren".

Was muss ich tun, um eine Zuordnung von Pizza zu PizzaEdit zu erhalten und PizzaTypeId in das DTO-Objekt zu integrieren?

pizzaObj.MapTo<PizzaEdit>() funktioniert aber PizzaTypeId ist immer Null.

Ich bin offen für die Klassenstruktur nach Bedarf ändern.

Antwort

3

Fügen Sie die Eigenschaft PizzaTypeId zu Pizza Klasse hinzu, es wird FK zu PizzaType Tabelle.

public class Pizza 
{ 
    public int Id { get; set; } 
    public virtual PizzaType PizzaType { get; set; } 
    [ForeignKey("PizzaType")] 
    public int PizzaTypeId { get; set; } 
} 

oder ohne FK (NotMapped) über LazyLoading:

public class Pizza 
{ 
    public int Id { get; set; } 
    public virtual PizzaType PizzaType { get; set; } 
    [NotMapped] 
    public int PizzaTypeId { get { return PizzaType.Id; } } 
} 
+0

Dank. Ich hatte das versucht, aber in meinem tatsächlichen Modell war PizzaTypeId ein 'long' und ich versuchte es mit einem' int' zu verbinden, was dazu führen würde, dass es fehlschlug. – Lefka

Verwandte Themen