Ich habe die folgenden zwei Domänenmodelle.Validierung für eine oder mehrere Entitäten fehlgeschlagen. Weitere Details finden Sie in der EntityValidationErrors-Eigenschaft.
[Table("tblActual_AgencyProfile")]
public class AgencyModel
{
public AgencyModel()
{
CategoryItemList = new List<CategoryModel>();
user = new UserProfile();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string UniqueURL { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public string Email { get; set; }
public string ABN { get; set; }
public string CAN { get; set; }
public string PhotoURL { get; set; }
public string Summary { get; set; }
public string Specialities { get; set; }
public string LocationsServices { get; set; }
public DateTime? ImportedDateTime { get; set; }
public int? UserID { get; set; }
[ForeignKey("UserID")]
public UserProfile user { get; set; }
public ICollection<CategoryModel> CategoryItemList { get; set; }
}
[Table("UserProfile")]
public class UserProfile
{
public UserProfile()
{
Actual_Category_List = new List<CategoryViewModel>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
[Required]
public string UserType { get; set; }
[RequiredIfAttribute("UserType", "Agency")]
public string AgencyName { get; set; }
public string Title { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Address { get; set; }
[Required]
public string Suburb { get; set; }
[Required]
public string State { get; set; }
[Required]
public string PostCode { get; set; }
[Required]
public string Phone { get; set; }
public string Fax { get; set; }
public string Mobile { get; set; }
[EmailAddress]
[Required]
public string EmailAddress { get; set; }
public ICollection<CategoryViewModel> Actual_Category_List { get; set; }
}
Dann habe ich eine Update-Methode in meinem Repository Klasse
public void EditDetails(AgencyViewModel model)
{
try
{
using (WebScrapperDBContext contex = new WebScrapperDBContext())
{
using (TransactionScope scope = new TransactionScope())
{
AgencyModel agency = (from tb in contex.agencies where tb.ID == model.ID select tb).SingleOrDefault();
agency.Address = model.Address;
agency.Email = model.Email;
agency.Fax = model.Fax;
agency.LocationsServices = model.LocationsServices;
agency.Name = model.Name;
agency.Phone = model.Phone;
if (!string.IsNullOrEmpty(agency.PhotoURL))
agency.PhotoURL = model.PhotoURL;
agency.Specialities = model.Specialities;
agency.Summary = model.Summary;
agency.user.Address = model.Address;
agency.user.AgencyName = model.Name;
agency.user.EmailAddress = model.Email;
agency.user.Fax = model.Fax;
agency.user.Mobile = model.Mobile;
agency.user.Phone = model.Phone;
agency.user.PostCode = model.PostCode;
agency.user.State = model.State;
agency.user.Suburb = model.Suburb;
contex.SaveChanges();
scope.Complete();
}
}
}
catch (Exception ex)
{
throw ex;
}
}
Wie Sie sehen können, ich will nicht alle Felder in UserProfile
aktualisieren (Ex: FirstName
, LastName
). Wenn ich die EditDetails()
Methode ausführen, löst es eine Ausnahme aus
Validierung fehlgeschlagen für eine oder mehrere Entitäten. Weitere Informationen finden Sie unter Eigenschaft 'EntityValidationErrors'.
Das könnte sein, weil ich einige erforderliche Felder im Domänenmodell überspringe. Wie kann ich dieses Problem lösen?
Was sagt _See 'EntityValidationErrors' Eigenschaft für weitere Details_ Sie über den Fehler? –
@StephenMuecke Ich habe gerade die EntityValidationErrors überprüft. Genau wie ich dachte, es würde die Validierungsfehler für die erforderlichen Felder auslösen. – chamara
Sie müssen wahrscheinlich ein '.Include (x => x.user)' in Ihrer Abfrage haben, damit die 'user' -Eigenschaft mit ihren vorhandenen Werten gefüllt wird, so dass Sie nur pdate, was Sie brauchen. –