Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The same in Scala + Slick would be:

    val q = Users.filter(_.userType == UserTypes.Basic).map(_.group)
Although I'm not sure what the context.Users.Include bit in the EF example is doing. Both will generate statement at compile time, and I assume EF queries are composable as is the case with Slick.

Slick's readability does suffer though with more complex queries -- unfortunate they strayed away from SQL semantics in favor of Scala collections. We'll see where it goes...



Include() on an ObjectContext will return the corresponding foreign key objects. It's a poor man's join to related entities. There is also Join(), but that will join by anything.


Ah ok, I see. Slick actually does have a nice shorthand for fkey joins:

    val q = for{
      ur <- UserRole; u <- ur.user; r <- ur.role
    } yield(ur,u,r)
which would produce semantic equivalent to:

    select ur.id, ur.a, ..., u.id, u.a ...
    from userrole ur
    join user u on u.id = ur.userId
    join role r on r. id = ur.roleId
grouping and sorting is where Slick becomes less readable SQL-like DSL and more boilerplate DSL full of meaningless tuples O_o




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: