Kundenklasse:Neues Objekt einfügen mit real, um neue Objekte mit Identitätsspalte
class Customer
{
int id;
int phone;
int fax;
PhoneNumber phone1;
PhoneNumber fax1;
}
Class PhoneNumber
{
int id;
int prefixid;
string number;
}
Die Phone von EF4 automatisch generiert wurde, habe ich die automatisch generierten Namen zu phone1 ändern und fax1
Sowohl die Telefonnummer als auch die Kundennummer sind Identitätsspalten in der Datenbank.
Jetzt möchte ich einen neuen Kunden schaffen:
var newCustomer = Customer.CreateCustomer(0, CompanyID);
PhoneNumber fax = new PhoneNumber();
PhoneNumber phone = new PhoneNumber();
fax.Customers.Add(newCustomer);
phone.Customers.Add(newCustomer);
context.Customers.AddObject(newCustomer);
context.SaveChanges();
Aber jetzt erhalte ich:
System.Data.UpdateException: {"Cannot insert explicit value for identity column in table 'PhoneNumber' when IDENTITY_INSERT is set to OFF."}
Warum ist nicht EF4 befassen sich mit der Identitätsspalte der verknüpften Tabelle, wie sie umgehen sollte mit einer neuen Einheit? Wie kann ich das schaffen?
(EF4 haben 2 entiries in Handys Tabelle erstellen Sollte ihre Identität erhalten und sie an den Kunden Zeile des neuen Kunden hinzufügen - zumindest das, was ich tun will)
Ich weiß, ich kann 2 erstellen Telefon Aufzeichnungen, und dann erstellen Sie den Kunden einen, aber
a. Ich möchte, dass es in einem Akt geschieht.
b. wenn cusotmer Schöpfung versagt - ich will nicht, leere Datensätze auf dem Tisch Telefone ...
Dank. 1. EDMX wurde automatisch generiert. Die Phonennummer ID ist Identität in DB, und es ist nicht auf EDMX - ich versuche es jetzt zu beheben. 2. Diese Methode wurde von VS2010 automatisch generiert. 3. Jeder Kunde hat tatsächlich 4 Telefonnummern. Es hat 4 Navigationseigenschaften, die ich nur ihre Namen änderte. 4. Ich habe das auch gemacht - habe den gleichen Fehler bekommen. Ihr Design ist besser, aber ich möchte, dass jeder Kunde genau 4 Telefonnummern hat, 1 von ihnen ist Fax und 1 ist Zelle - also habe ich eine feste Beziehung (1: 4) und nicht 1: N gemacht. Ich ändere edmx manuell und versuche es erneut (Identität) – Dani
Ich habe PhoneNumber ID geändert, um Identität in EDMX, versuchte beide Möglichkeiten (auch versucht, newCustomer.CellNumber = new PhoneNumber();) und der gleiche Fehler tritt auf. – Dani
OK. Die Telefon-ID wurde in der XML-Datei als Identität geändert (es wurde ein anderer Standort gefunden, der vom Modellbrowser nicht geändert wurde) - und es hat wie erwartet funktioniert !! Danke noch einmal. – Dani