我是LINQ的新手,所以我一直在关注一些教程和官方文档,例如如何:在开发者网络上映射数据库关系。
我正在执行此操作:
1)有两个类Locality和Region,这个“表”之间有一对多关系,因此一个Region有多个Localities。我像这样映射了这个关联:
区:
private EntitySet<City> _cities = new EntitySet<City>();
[Association(Storage = "_cities", ThisKey = "RegionId", OtherKey = "RegionId")]
public EntitySet<City> Cities
{
get { return _cities; }
set { _cities.Assign(value); }
}
该地区还有两个字段RegionId和Name。 City也有两个字段:CityId,Name(当然在RegionId外键旁边)。
现在我填充数据库。所以我可以使用如下查询选择所有城市:
var city = from City cities in db.cities
select cities;
我可以看到属于City Entity的所有属性。但是当我执行此查询时:
var regiones = from Region region in db.regions
select region;
我只能访问RegionId,Name,因为Cities EntitySet始终为空。我现在不知道我做错了什么,所以我希望你们中的一些人能帮助我。
答案 0 :(得分:0)
您确定在您的上下文中启用了LazyLoading。 如果没有,您可以打开它,或者您可以使用db.regions.Include(&#34; Cities&#34;)来显式加载城市。
答案 1 :(得分:0)
很抱歉浪费你的时间,我终于找到了我的错误,我用标志IsDbGenerated = true定义了Region的主键,但是我正在为City中的外键发送一个准备好的值,所以关系破了,我修复了区域主键和Voila。