EF Core - игнорировать поле (не создавать столбец в db), а заполнять его из необработанного запроса - PullRequest
1 голос
/ 17 июня 2020

У меня есть объект с полем, которое не должно создаваться в базе данных, но должно быть заполнено из хранимой процедуры.

public class Item 
{
    public int Id {get; set;}
    public int CalculatedField {get; set;}
}

Затем я хочу заполнить его хранимой процедурой

var items = _db.Items.FromSqlRaw("select * from StoredProcedure()").ToList()

Но если я использую атрибут [NotMapped] или опцию .Ignore fluent - поле EF полностью, и хотя моя хранимая процедура возвращает CalculatedField, EF не использует его.

Есть ли способ добиться такого поведения?

1 Ответ

1 голос
/ 18 июня 2020

Вы можете использовать результаты запроса для присвоения значения. Есть разные способы сделать это. Вот один, в котором вы перебираете результаты запроса и создаете экземпляр элемента, назначаете значения свойств и добавляете его в список элементов:

var items = new List<Item>();
var results = _db.Items.FromSqlRaw("select * from StoredProcedure()").ToList();
foreach(var result in results) {
   var item = new Item {
      Id = result.Id,
      CalculatedField = result.CalculatedField
   }
   items.Add(item);
}
...