SubSonic тайна внутреннего соединения - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть 2 таблицы CampaignCoverage и Coverage

CampaignCoverage имеет столбец CoverageID. Покрытие имеет столбец DateX.

По сути, я не указал в коде, что CampaignCoverage.CoverageID = Coverage.ID, как вы это сделали бы в SQL. Как это работает вообще ???? !!!!

CampaignCoverageCollection campaignCoverages = 
    new Select()
        .From(Tables.CampaignCoverage)
        .InnerJoin(Tables.Coverage)                               
        .Where(Coverage.DateXColumn).IsGreaterThan(ucDateStart.DateTime)
        .And(Coverage.DateXColumn).IsLessThan(ucDateEnd.DateTime)
        .And(CampaignCoverage.CampaignIDColumn).IsEqualTo(campaign.Id)
        .ExecuteAsCollection<CampaignCoverageCollection>();

1 Ответ

1 голос
/ 05 февраля 2010

Если вы не указали, что CampaignCoverage.CoverageID является внешним ключом для Coverage.ID (я думаю, именно это вы и пытаетесь сказать), то избавление от объединения должно помочь. т.е. удалить

.InnerJoin(Tables.Coverage)

Тем не менее, вы, вероятно, хотите сделать CampaignCoverage.CoverageID внешним ключом для Coverage.ID. После этого вы можете избавиться от предложения IsEqualTo. т.е. удалить

.And(CampaignCoverage.CampaignIDColumn).IsEqualTo(campaign.Id)
...