Ok lassen Sie mich mit meinem Modell starten:Entity Framework-Code Erster Satzfehler
Kontakt-Methode Arten:
public class ContactMethodType
{
[Key]
[HiddenInput(DisplayValue = false)]
public Guid ContactMethodTypeGUID { get; set; }
[Required(ErrorMessage = "Please enter a Contact Method Type Name.")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a brief description.")]
public string Description { get; set; }
public bool IsActive { get; set; }
public virtual ICollection<ContactMethod> ContactMethods { get; set; }
Kontakt Methoden:
public class ContactMethod
{
[Key]
[HiddenInput(DisplayValue = false)]
public Guid ContactMethodGUID { get; set; }
public virtual ContactMethodType Type { get; set; }
public string CountryCode { get; set; }
[Required]
public string Identifier { get; set; }
public bool IsPreferred { get; set; }
}
Empfänger:
public class Recipient
{
[Key]
public Guid RecipientGUID { get; set; }
[Required(ErrorMessage = "Please enter a Recipient's First Name.")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Please enter a Recipient's Last Name.")]
public string LastName { get; set; }
public string Company { get; set; }
public UserGroup Owner { get; set; }
public List<ContactMethod> ContactMethods { get; set; }
public User CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public User LastModifiedBy { get; set; }
public DateTime LastModifiedOn { get; set; }
public bool IsActive { get; set; }
}
Ich habe zwei Con Takt-Methode Typen bereits definiert: E-Mail und SMS
Jetzt bin ich einen neuen Empfänger zu schaffen, so dass ich hinzufügen, alle erforderlichen Daten zu meinem Empfänger Objekt, und dann rufe ich:
context.Recipients.Add(myRecipient);
context.SaveChanges();
Was ich ist ein Fehler, den ich bin, um einen neuen ContactMethodType hinzuzufügen, wenn einer bereits vorhanden ist. Aber das soll eine Eins-zu-Viele-Beziehung sein, und ich möchte keinen neuen ContactMethodType hinzufügen, sondern einfach eine neue Kontaktmethode (n) für meinen Empfänger kategorisieren.
Ich bin nicht sicher, wann dies geschieht. Vielleicht ist mein Modell falsch? Basierend auf dem, was als Typ ausgewählt ist, ziehe ich dieses Type-Objekt und setze es auf die Variable ContactMethod.Type. Aber wie ich schon sagte, anstatt es nur mit einem vorhandenen ContactMethodType zu verknüpfen, versucht es es neu zu erstellen, und da die GUID bereits existiert, bekomme ich den Fehler, dass der Datensatz nicht erstellt werden kann, da der Schlüssel (GUID) bereits existiert.
Irgendwelche Ideen?
Wie bevölkern Sie 'myRecipient.ContactMethods'? Kannst du diesen Code posten? – wdosanjos
ich eine Kontaktmethode Objekt zu erstellen, füllen Sie es, dann: tmpRecipient.ContactMethods.Add (myCM); – MarekT
Erhalten Sie die Objekte für Ihre Kontaktmethodenliste aus einer Abfrage? Oder instanziieren Sie sie als 'neue ContactMethod'? Letzteres wird die von Ihnen gemeldete Ausnahme verursachen. – wdosanjos