我一直在玩 Simple.Data 并且遇到了一些我无法理解的东西。
在我的数据中,我有三个表:Hotel、Project 和 ProjectMilestone。一个酒店可以有多个项目,一个项目可以有多个项目里程碑。我正在使用 SQL Server,并且这些表以标准方式通过外键相关联。
使用 Simple.Data 时,以下代码将不起作用:
var db = Database.Open();
var hotels = db.Hotel.All().Take(100);
foreach (var hotel in hotels)
{
foreach (var project in hotel.Project)
{
foreach (var projectMilestone in project.ProjectMilestone)
{
//Do something here
}
}
}
它抛出一个错误,上面写着:
“Simple.Data.SimpleRecord”不包含“Project”的定义
但是,以下代码确实有效:
var db = Database.Open();
var hotel = db.Hotel.FindByHotelID(1);
foreach (var project in hotel.Project)
{
foreach (var projectMilestone in project.ProjectMilestone)
{
//Do something here
}
}
我完全不明白这一点。在我看来,如果第二个有效,那么第一个也应该有效。All().Take(100) 返回的集合不是 FindByHotelID(1) 返回的集合吗?浏览这些类型,看起来它们应该是。
有人见过这个吗?