Я пытаюсь обновить только некоторые из полей таблицы. Я создал модель представления с полями, которые необходимо обновить. В таблице есть другие поля, которые не нужно касаться, поэтому они оставлены в модели представления.Частичное обновление с помощью Entity Framework - ASP.NET MVC3 C#
Когда я выполняю SaveChanges(), я получаю сообщение об ошибке, связанной с полем, не включенным в модель представления, не может быть NULL. Поскольку это частичное обновление, я думал, что поля, не включенные в модель представления, должны быть оставлены в покое только в обновлении.
Исключение:
Cannot insert the value NULL into column 'NewClubName', table 'dbo.NewClub';
column does not allow nulls. UPDATE fails
Вот что у меня есть:
//View Model
public class FormANewClubTeamViewModel
{
/******************************************************
Properties for Domain Model "NewClub"
*******************************************************/
public int NewClub_Id { get; set; }
//District and Division
public string District { get; set; }
public string Division { get; set; }
//Lt Governor
public string LtGovMasterCustomerId { get; set; }
public string LtGovContact { get; set; }
public string LtGovEmail { get; set; }
public string LtGovPhone { get; set; }
// Club Counselor
public string ClubCounselorMasterCustomerId { get; set; }
[Display(Name = "Club counselor")]
[Required(ErrorMessage = "Club counselor name")]
public string ClubCounselorContact { get; set; }
[Display(Name = "Club counselor email")]
[Required(ErrorMessage = "Club counselor email")]
public string ClubCounselorEmail { get; set; }
[Display(Name = "Club counselor phone")]
[Required(ErrorMessage = "Club counselor phone")]
public string ClubCounselorPhone { get; set; }
/******************************************************
Properties for Domain Model "NewClubSponsor"
*******************************************************/
public List<NewClubSponsor> Sponsors { get; set; }
}
//Controller doing the update
if (ModelState.IsValid)
{
if (model.NewClub_Id > 0)
{
httpStatus = HttpStatusCode.OK;
NewClub newClub = new NewClub
{
Id = model.NewClub_Id,
ClubCounselorMasterCustomerId = model.ClubCounselorMasterCustomerId,
ClubCounselorContact = model.ClubCounselorContact,
ClubCounselorEmail = model.ClubCounselorEmail,
ClubCounselorPhone = model.ClubCounselorPhone,
DateUpdated = DateTime.Now
};
db.NewClubs.Add(newClub);
db.Entry(newClub).State = EntityState.Modified;
try
{
var dbResult = db.SaveChanges() > 0;
}
catch (SqlException ex)
{
[...]
}
можно объяснить более и дать сведения об исключении? –
уверен. Я обновил вопрос. Суть его в том, что в таблице есть столбец, который не может быть нулевым. этот столбец не нужно обновлять в этот момент, поэтому я не знаю, почему EF заботится об этом в ОБНОВЛЕНИИ. – Slinky
Когда вы создаете новые сущности, поля, которые вам не нужны, имеют значения по умолчанию (null) и почему они генерируют исключение. –