Hi Stefan -

> I don't see why A = B is such a strange SQL statement for you. 

Yes, I know. But let's skip this, ok? I think the best thing is that we agree 
to disagree that my premise "if it behaves different from Linq, it is a 
smell/bug/strange-descision-to-be-discussed" is valid.

> You don't
> have to use navigation or the "join" operator, you might use a where clause.
> And you don't have to restrict yourself to a primary key on either side.
> How about A.C_ID = B.C_ID without actually including C in the query, and
> both C_ID columns being nullable? Would you want to write A.C.ID == B.C.ID &&
> A.C.ID != null? To see this get expanded to ... I don't even want to write
> it down ;-)

Interesting. The expression language I have designed (5 years ago) does not 
have a join - only navigation. At the few places where such "non-navigational 
joins" are needed, people wrote a .Any or .Exists (and SQL Server optimizes 
this to a join anyway).

But this is no real argument in the case of NHibernate, which has to work in a 
much more open environment than our framework. So yes, you are right.

> I'm only surprised that the L2S teams design decisions are so easily
> dismissed.

I don't think that I ever dismissed them easily. I "dismiss" them after much 
thinking and discussing and writing examples and texts. And I try to explain my 
arguments by explicitly stating assumptions like (BEHAV-1) etc. in my text. And 
I still see discussions as that with Patrick and you as a good reason to 
*implement* it along the lines of the community (e.g. you). I still "reserve 
the right" to (try to) argue along more purist (in my opinion) lines,

BTW, I have not seen such a text from the Linq2Sql team - only a practical 
explanation that bypasses many interesting semantical concepts and questions. 
If such a text exists, I have missed it - my fault! If not, I would claim that 
their decisions lack at least some conceptual support (other than "we did it, 
they use it, they dont complain, so it must be right" - but this was true even 
for the most outrageous COBOL and PL/I dialects - which still didn't make them 
well-designed languages).

I still hope that the patch for the || operator that Patrick has now committed 
with his additions for missing features makes you happy - because now || 
behaves a little more like Linq than before :-)

Best regards
Harald

-- 
GMX DSL Doppel-Flat ab 19,99 Euro/mtl.! Jetzt mit 
gratis Handy-Flat! http://portal.gmx.net/de/go/dsl

Reply via email to