在 EF6 中,我有一个实体客户,具有实体地址的导航属性。地址实体包含属性“城市”。
我可以急切地加载地址实体,同时获取所有客户,如下所示:
_dbSet.Customers.Include(customer => customer.Address);
这为我提供了所有客户,以及急切加载的所有地址属性。
当然,这工作得很好,但我从地址表中唯一需要的是“城市”字段,并且在不需要它们的情况下从持久数据存储(SQL Server)中获取所有地址属性感觉不太好。
我尝试了以下方法:
_dbSet.Customers.Include(customer => customer.Address.City);
...但这给了我一个运行时异常:
An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll
Additional information: A specified Include path is not valid. The EntityType 'MyModel.Address'does not declare a navigation property with the name 'City'.
我理解这一点,因为城市只是一个字段,而不是与另一个表/实体的关系。
但是有没有另一种方法可以实现我想要的,或者最好的做法是只包含整个地址实体,即使我只需要城市字段???
我想要的是,我可以使用 myCustomer.Address.City,而不需要对数据库进行额外的查询,但是例如,当我使用 myCustomer.Address.Street 时,Street 属性不会立即加载,并且应该另外从数据库...