2015-05-07 2 views
2

Рассмотрим следующую модель для EF 6 объекта:Создание вычисляемого поля с помощью Entity Framework 6

Id (Int, обнуляемым: ложь, идентичность: истина) Имя (строка) номер (строка).

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

Спасибо!

+0

попытаться вставить первый и en update –

ответ

0

Постарайтесь первым вставив элемент в базу данных:

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(); 
+0

Я действительно надеялся, что мне не нужно так поступать. Но что есть, то есть. Благодаря! –

2

Если вам не нужно, чтобы сохранить вычисленное поле для базы данных и использовать POCOs для Entities, вы можете просто определить неотображенное поле, подобное этому:

[NotMapped] 
public string Number 
{ 
    get { return Name + Id.ToString(); } 
} 
Смежные вопросы