Создание вычисляемого поля с помощью Entity Framework 6
Рассмотрим следующую модель для объекта EF 6:
Id (int, nullable: false, identity: true)
Имя (строка)
Число (строка).
Я хочу, чтобы число сохранялось как комбинация буквы и поля id. Например, если во время вставки ID valuse будет 1, я хочу, чтобы число было A00000001. Я попытался использовать databasegenerated атрибут на номер, но это не сработало. Проблема в том, что во время вставки EF не будет знать, какое значение идентичности. Есть ли способ определить триггер для этого или есть ли какой-то другой метод, которым я могу этого добиться?
Спасибо!
2 ответов:
Попробуйте сначала вставить элемент в базу данных:
Item myItem = new Item(){Name = "MyName"}; dbcontext.Items.Add(myItem); dbcontext.SaveChages();Затем извлеките элемент из базы данных и обновите его:
Item insertedItem = dbcontext.Items.Single(i => i.Id == myItem.Id); insertedItem.Number = insertedItem.Name + insertedItem.Id.toString(); dbcontext.SaveChages();
Если вам не нужно сохранять вычисляемое поле в базе данных и вы используете POCOs для сущностей, вы можете просто определить несопоставленное поле следующим образом:
[NotMapped] public string Number { get { return Name + Id.ToString(); } }
Comments