Как отобразить сгенерированный базой данных столбец в SELECT в EF Core? - PullRequest
1 голос
/ 16 апреля 2020

Я хотел бы использовать временный столбец, сгенерированный базой данных 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;
    }

Любая помощь высоко ценится. Заранее спасибо.

...