Entity framework core EF Core完全忽略我在select中选择的属性

Entity framework core EF Core完全忽略我在select中选择的属性,entity-framework-core,entity-framework-core-3.1,Entity Framework Core,Entity Framework Core 3.1,据我所知,以下代码应该生成一个只包含RouteId、RouteNo和ShipId的查询 然而,我得到: SELECT v.route_id, v.route_no, v.tow_id, v.analysis_complete, v.checks_complete, v.cpr_id, v.date_created, v.date_last_modified, v.factor, v.fromportname, v.instrument_data_file, v.instrument_id, v.

据我所知,以下代码应该生成一个只包含RouteId、RouteNo和ShipId的查询

然而,我得到:

SELECT v.route_id, v.route_no, v.tow_id, v.analysis_complete, v.checks_complete, v.cpr_id, v.date_created, v.date_last_modified, v.factor, v.fromportname, v.instrument_data_file, v.instrument_id, v.internal_number, v.mastername, v.message, v.miles_per_division, v.month, v.number_of_samples, v.number_of_samples_analysed_fully, v.prop_setting, v.route_status, v.sampled_mileage, v.serial_no_per_calendar_month, v.ship_speed, v.silk_reading_end, v.silk_reading_start, v.toportname, v.tow_mileage, v.validity, v.year
FROM view_all_tow_data AS v
WHERE v.route_id = '@__id_0'
ORDER BY v.route_no DESC
LIMIT 1
这是除显式请求的ShipId之外的所有列!我做错了什么

使用SQL Server和PostGres数据库时会发生这种情况,

未通过[NotMapped]注释或映射指令映射属性SHIPID。就EF而言,该属性不存在。这有两个影响:

EF注意到最终选择中有一个未知部分,它切换到客户端评估,因为这是最终选择。这意味着:它将Select之前的查询转换为不包含ShipId列的SQL,执行它,并具体化完整的AllTowData实体。 它计算Select客户端并返回请求的TowDefaults对象,其中ShipId有其默认值,或者您在C代码中初始化的任何值,但不从数据库返回任何值。 您可以通过在查询后检查_context.AllTowData.Local来验证这一点:它将包含通过筛选的所有AllTowData实体

从你的问题看不出你应该做什么。也许可以将属性映射到视图中的列。如果不是,则应将其从LINQ查询中删除。在LINQ anywhere中使用它,但在最终选择中使用它将导致运行时异常。

属性SHIPID未通过[NotMapping]注释或映射指令进行映射。就EF而言,该属性不存在。这有两个影响:

EF注意到最终选择中有一个未知部分,它切换到客户端评估,因为这是最终选择。这意味着:它将Select之前的查询转换为不包含ShipId列的SQL,执行它,并具体化完整的AllTowData实体。 它计算Select客户端并返回请求的TowDefaults对象,其中ShipId有其默认值,或者您在C代码中初始化的任何值,但不从数据库返回任何值。 您可以通过在查询后检查_context.AllTowData.Local来验证这一点:它将包含通过筛选的所有AllTowData实体


从你的问题看不出你应该做什么。也许可以将属性映射到视图中的列。如果不是,则应将其从LINQ查询中删除。在LINQ anywhere中使用它,但在最终选择中使用它将导致运行时异常。

AllTowData的确切类型是什么?此外,如果存在,还应显示类模型+自定义映射代码。这通常发生在选择中包含一些未映射的[NotMapping]或.Ignore…d源列时。在本例中,ShipId似乎是配置为忽略的属性。选择匿名类型。Selectt=>new{t.RouteId,TOWNOO=t.RoueNo}@BjarkeHandsdal我看不出匿名类型会有什么帮助,但是…它没有:-我已经尝试过了AllTowData的确切类型是什么?此外,如果存在,还应显示类模型+自定义映射代码。这通常发生在选择中包含一些未映射的[NotMapping]或.Ignore…d源列时。在本例中,ShipId似乎是配置为忽略的属性。选择匿名类型。Selectt=>new{t.RouteId,TOWNOO=t.RoueNo}@BjarkeHandsdal我看不出匿名类型会有什么帮助,但是…它没有:-我试过哦,***,我检查了50万次[可能没有那么多],甚至在问题中发布了模型,直到它出现在问题中,才看到[未映射]。没关系……哦,******,我检查了50万次[可能没有那么多],甚至在问题中发布了模型,直到它出现在问题中才看到[未映射]。不要介意。。。
SELECT v.route_id, v.route_no, v.tow_id, v.analysis_complete, v.checks_complete, v.cpr_id, v.date_created, v.date_last_modified, v.factor, v.fromportname, v.instrument_data_file, v.instrument_id, v.internal_number, v.mastername, v.message, v.miles_per_division, v.month, v.number_of_samples, v.number_of_samples_analysed_fully, v.prop_setting, v.route_status, v.sampled_mileage, v.serial_no_per_calendar_month, v.ship_speed, v.silk_reading_end, v.silk_reading_start, v.toportname, v.tow_mileage, v.validity, v.year
FROM view_all_tow_data AS v
WHERE v.route_id = '@__id_0'
ORDER BY v.route_no DESC
LIMIT 1