Вы говорите, что в базе данных уже есть объект с данным Id
, и вы хотели бы изменить его значение Status
?
Это не то, что вы делаете в своем коде. Вы создали новый объект с данным Id
и установите только его значение Status
. Вот почему он бросает поле ValidationException
: ClassName
пусто, если вы не устанавливаете его в конструкторе Drama
.
Чтобы изменить существующий объект сначала вы должны восстановить его из базы данных, а затем изменить его и сохранить изменения:
using (var ctx = new DataContext()) {
var drama = ctx.Dramas.Single(d => d.Id == id);
drama.Status = state;
ctx.SaveChanges();
}
EDIT:
Если вы хотите, чтобы имитировать сценарий редактирования отстраненно entity, вам все равно нужны его значения. Попробуйте выполнить все требования проверки перед установкой лица (т.е. заполнить ClassName
), затем Attach
его, обновите Status
и SaveChanges
:
var drama = new Drama { Id = id, ClassName = "Dummy" };
using (var ctx = new DataContext()) {
ctx.Dramas.Attach(drama);
drama.Status = state;
ctx.SaveChanges();
}
Что ваш DataContext выглядеть? – antiduh
У него, вероятно, около 20 сущностей. Не уверен, что вы имеете в виду? – James