Создание вычисляемого поля с помощью Entity Framework 6



Рассмотрим следующую модель для объекта EF 6:



Id (int, nullable: false, identity: true)
Имя (строка)
Число (строка).



Я хочу, чтобы число сохранялось как комбинация буквы и поля id. Например, если во время вставки ID valuse будет 1, я хочу, чтобы число было A00000001. Я попытался использовать databasegenerated атрибут на номер, но это не сработало. Проблема в том, что во время вставки EF не будет знать, какое значение идентичности. Есть ли способ определить триггер для этого или есть ли какой-то другой метод, которым я могу этого добиться?



Спасибо!

640   2  

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

    Ничего не найдено.