Я хотел бы использовать временный столбец, сгенерированный базой данных MySQL в операторе SELECT, и прочитать его из базы данных с помощью EF Core:
public async Task<List<Hydrant>> Search(double Latitude, double Longitude, float Radius)
{
var hydrants = await _context.Hydrants.FromSqlInterpolated($"SELECT *,( 6371 * acos( cos( radians( {Latitude} ) ) * cos( radians( hydrant_latitude ) ) * cos( radians( hydrant_longitude ) - radians({Longitude}) ) + sin( radians({Latitude}) ) * sin( radians( hydrant_latitude ) ) ) ) AS hydrant_distance FROM ef_hydrants.hydrants HAVING hydrant_distance < {Radius}").ToListAsync();
return hydrants;
}
Мне нужен этот столбец hydrant_distance только в этом операторе SELECT, и сгенерированное значение зависит от параметров Широта , Долгота и Радиус .
То есть также причина того, что следующее свойство модели не работает для меня:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[Column("hydrant_distance")]
public double Distance { get; private set; }
Столбец не существует в базе данных, потому что это сгенерированный столбец, но при выполнении простого оператора SELECT столбец будет читаться EF Core, как и любой другой столбец:
public async Task<Hydrant> Get(uint id)
{
var hydrant = await _context.Hydrants.FindAsync(id);
return hydrant;
}
Любая помощь высоко ценится. Заранее спасибо.