Ich benutze Entity Framework mit einer MVC5-Anwendung und derzeit versuche ich einige Formulardaten zu speichern, die mehrere Tabellen in meiner Datenbank berührt. Wenn ich Daten zu den Tabellen hinzufüge, scheint es gut zu funktionieren, aber sobald ich die Bridge-Tabellen treffe, bekomme ich eine Null-Ref-Ausnahme, die für mich keinen Sinn ergibt.Entity Framework Null Referenz Ausnahme beim Hinzufügen zu Bridge-Tabellen
Ich bin neu in der Programmierung, so würde jede Hilfe sehr geschätzt werden.
public void RegisterNewUser(IDCRegisterViewModel model)
{
//
string fullAddress = model.AddressLine1 + "\n" + model.AddressLine2 + (string.IsNullOrEmpty(model.AddressLine2) ? "" : "\n") + model.City + ", " + model.State + " " + model.Zip + "\n" + model.Country;
using (var AuthContext = new InfoKeeperEntities1())
{
AuthContext.Locations.Add(new Location {
Line1 = model.AddressLine1,
Line2 = model.AddressLine2,
City = model.City,
State = model.State,
Zip = model.Zip,
Country = model.Country,
UserID = model.UserID,
FullAddr = fullAddress
});
AuthContext.ProfileDatas.Add(new ProfileData
{
UserID = model.UserID,
UACC = model.UACC,
isRecCenter = model.IsRecCenter,
isCustAdmin = model.IsCustAdmin
});
//Add to bridge tables for user/dept and group/dept
List<Department> deptList = new List<Department>();
foreach (var ID in model.GroupIDs)
{
deptList.Add(AuthContext.Departments.FirstOrDefault(x => x.ID == ID));
}
foreach (var department in deptList)
{
//NULL REF EXCEPTION HERE
AuthContext.AspNetUsers.FirstOrDefault(x => x.Id == model.UserID).Departments.Add(department);
foreach (var groupID in model.GroupIDs)
{
AuthContext.Groups.FirstOrDefault(x => x.ID == groupID).Departments.Add(department);
}
}
}
}
Bitte geben Sie an, welche Linie wirft die Null Referenz Ausnahme. – mjw
Aktualisiert. Vielen Dank. – SentOnLine
Setzen Sie einen Haltepunkt in Ihrem Code in der Zeile, in der Sie den NULL REF haben, und markieren Sie diesen Teil der Zeile AuthContext.AspNetUsers.FirstOrDefault (x => x.Id == model.UserID), wenn er den Haltepunkt erreicht Klicken Sie auf und wählen Sie Quick Watch, um zu sehen, ob diese LINQ-Anweisung irgendetwas zurückgibt. – mjw