我有一个包含几何列的表,使用EF Core 空间数据和Npgsql.EntityFrameworkCore.PostgreSQL 提供程序
class City
{
public int ID { get; set; }
public string CityName { get; set; }
public Point Location { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我曾经这样按距离过滤
Point myLocation = new Point(longitude, latitude)
{
SRID = 4326
};
cities = db.Cities.Where(a => a.Location.ProjectTo(2855).Distance(myLocation.ProjectTo(2855)) <= radiusMeters);
Run Code Online (Sandbox Code Playgroud)
更新后我收到以下错误:
无法翻译 LINQ 表达式“DbSet()...”。其他信息:方法“App.GeometryExtensions.ProjectTo”的翻译失败。
它无需使用即可工作ProjectTo(),但按度数计数。有没有办法再次将此查询翻译为与仪表一起使用?
我尝试使用 net core ver 3.1 配置 web api。另一个具有类似配置和相同版本软件包的应用程序也可以在我的电脑上使用相同的 iis express。
这是我的 Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
readonly string AllowSpecificOrigins = "_allowSpecificOrigins";
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(AllowSpecificOrigins,
builder =>
{
builder.AllowCredentials().AllowAnyMethod().AllowAnyHeader().WithOrigins("http://localhost:4200");
});
});
services.AddControllers()
.AddNewtonsoftJson();
services.AddScoped<IAccountRepository, AccountRepository>();
services.AddScoped<IDocsRepository, DocsRepository>();
services.AddDbContext<LibContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("LibraryDatabase"), x => x.UseNetTopologySuite()));
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters …Run Code Online (Sandbox Code Playgroud)