NHibernate.Linq is currently at a limited stage (ver1). Using joins with
unrelated entity would result to a "NotImplementedException"

try to read this LINQ about that topic.. :P

http://guildsocial.web703.discountasp.net/dasblogce/2009/07/29/LinqToNHibernateJoins.aspx

On Fri, Apr 2, 2010 at 9:54 AM, Diego Mijelshon <[email protected]>wrote:

> First, design an actual object model, with its relationships. Then you'll
> be able to query without any explicit joins.
> BTW, it would help to use your actual table/class names in your mail.
>
>    Diego
>
>
>
> On Thu, Apr 1, 2010 at 19:25, rboarman <[email protected]> wrote:
>
>> I just figured out that HQL maps onto classes and not tables. This is
>> a fundamental concept that was eluding me. :)
>>
>> Let me elaborate on my schema. This is abbreviated for clarity.
>>
>> Table1
>>   -RowId (PK)
>>
>> Table2
>>   -RowId (PK)
>>   -Table1Id (FK -> Table1)
>>
>> Table3
>>   -RowId (PK)
>>   -Table2Id (FK -> Table2)
>>
>> What I want to do is load all of Table3 that has Table1Id = x using
>> one query.
>>
>> In SQL, I would simply execute this tSQL statement:
>>
>> select *
>> from Table3
>> inner join Table2 on Table3.Table2Id = Table2.RowId
>> where Table2.Table1Id = x
>>
>> In Linq2SQL or LLBLGen I would use this:
>>
>> var q = from table3 in metaData.Table3
>>        join table2 in metaData.Table2 on table3.Table2Id  equals
>> table2.RowId
>>        where table2.Table1Id == x
>>        select table3;
>>
>> I was expecting that nHibernate would let me query table3 using a
>> value out of table2 without needing a foreign key to table1.
>>
>> As a workaround, I could add a field in table3 that points to table1.
>> However, this is redundant and breaks the rules of normalization (Join
>> dependency).
>>
>> Does this make sense? How can I use Linq to query this? Do I need to
>> use HQL with a DTO?
>>
>> Thank you,
>>
>> Rick
>>
>>
>> On Apr 1, 2:59 pm, Paco Wensveen <[email protected]> wrote:
>> > I didn't know that. Isn't it HSql what you mean, that returns object
>> > arrays instead of entities? When it's implemented in hql, it will
>> > probably implemented in linq in the future (Not sure again).
>> >
>> >
>> >
>> > On Thu, Apr 1, 2010 at 11:37 PM, Diego Mijelshon <
>> [email protected]> wrote:
>> > > That's not correct. You can easily query unrelated entities in HQL,
>> just
>> > > like in SQL.
>> > > Of course it's a lot easier when they ARE related, and there aren't
>> many
>> > > valid reasons NOT to create the relationships...
>> >
>> > >    Diego
>> >
>> > > On Thu, Apr 1, 2010 at 18:32, Paco Wensveen <[email protected]> wrote:
>> >
>> > >> As far as I know (but I can be wrong) joins between unrelated
>> entities
>> > >> are not implemented in hql, or any other part of NHibernate. So the
>> > >> options are:
>> > >> - Create a relation between the entities
>> > >> - Use a sql query (with NHibernate)
>> > >> - Use a different orm that supports what you want.
>> >
>> > >> This is probably not the answer you would like to get, so I wonder
>> why
>> > >> you don't use a reference from SSObject to OtherObject in the code?
>> >
>> > >> Paco
>> >
>> > >> On Thu, Apr 1, 2010 at 11:21 PM, rboarman <[email protected]> wrote:
>> > >> > It's not in the mapping. I am trying to create an arbitrary query.
>> > >> > This works fine in Linq2SQL and LLBLGen.
>> >
>> > >> > In summary, does this mean we can only create inner joins when
>> there
>> > >> > is a FK relationship in place?
>> >
>> > >> > If so, am I better off using an HQL query?
>> >
>> > >> > Rick
>> >
>> > >> > On Apr 1, 2:15 pm, Paco Wensveen <[email protected]> wrote:
>> > >> >> I mean this a reference in the classes and mappings:
>> >
>> > >> >> public class SSObject
>> > >> >> {
>> > >> >>     public OtherObject Row {get;}
>> >
>> > >> >> }
>> >
>> > >> >> var q = from sso in session.Linq<SSObject>()
>> > >> >>         where ot.TargetId == someId
>> > >> >>         select sso;
>> >
>> > >> >> I guess the join method in NHibernate is not implemented because
>> > >> >> relations between tables are handled by the mapping already, and
>> there
>> > >> >> is a join is never needed when you use it in the mapping.
>> >
>> > >> >> On Thu, Apr 1, 2010 at 10:45 PM, rboarman <[email protected]>
>> wrote:
>> > >> >> > What? This is the sql I am trying to replicate:
>> >
>> > >> >> > select *
>> > >> >> > from SSObject
>> > >> >> > inner join OtherObject on SSObject.OtherObjectId =
>> OtherObject.RowId
>> > >> >> > where OtherObject.TargetId= 98
>> >
>> > >> >> > Thanks,
>> >
>> > >> >> > Rick
>> >
>> > >> >> > On Apr 1, 11:44 am, Paco Wensveen <[email protected]> wrote:
>> > >> >> >> By creating a reference in from one to another in the SSObject
>> or
>> > >> >> >> OtherObject?
>> >
>> > >> >> >> On Thu, Apr 1, 2010 at 7:23 PM, rboarman <[email protected]>
>> wrote:
>> > >> >> >> > Hello,
>> >
>> > >> >> >> > It’s unclear from this site and from Google searches whether
>> > >> >> >> > nHibernate’s implementation of Linq supports joins or not.
>> >
>> > >> >> >> > In my case, I want to do a VERY simple join.
>> >
>> > >> >> >> > var q = from sso in session.Linq<SSObject>()
>> > >> >> >> >        join ot in session.Linq<OtherObject>() on
>> sso.OtherObjectId
>> > >> >> >> > equals ot.RowId
>> > >> >> >> >        where ot.TargetId == someId
>> > >> >> >> >        select sso;
>> >
>> > >> >> >> > This gives me an error of “Cannot resolve method Join.”
>> >
>> > >> >> >> > I have tried a couple different version of the dll. Right now
>> I am
>> > >> >> >> > using 1.1.0.1001.
>> >
>> > >> >> >> > Any suggestions on how I can get this to work?
>> >
>> > >> >> >> > Rick
>> >
>> > >> >> >> > --
>> > >> >> >> > You received this message because you are subscribed to the
>> Google
>> > >> >> >> > Groups "nhusers" group.
>> > >> >> >> > To post to this group, send email to
>> [email protected].
>> > >> >> >> > To unsubscribe from this group, send email to
>> > >> >> >> > [email protected]<nhusers%[email protected]>
>> .
>> > >> >> >> > For more options, visit this group
>> > >> >> >> > athttp://groups.google.com/group/nhusers?hl=en.-Hidequotedtext -
>> >
>> > >> >> >> - Show quoted text -
>> >
>> > >> >> > --
>> > >> >> > You received this message because you are subscribed to the
>> Google
>> > >> >> > Groups "nhusers" group.
>> > >> >> > To post to this group, send email to [email protected].
>> > >> >> > To unsubscribe from this group, send email to
>> > >> >> > [email protected]<nhusers%[email protected]>
>> .
>> > >> >> > For more options, visit this group
>> > >> >> > athttp://groups.google.com/group/nhusers?hl=en.-Hide quoted
>> text -
>> >
>> > >> >> - Show quoted text -
>> >
>> > >> > --
>> > >> > You received this message because you are subscribed to the Google
>> > >> > Groups "nhusers" group.
>> > >> > To post to this group, send email to [email protected].
>> > >> > To unsubscribe from this group, send email to
>> > >> > [email protected]<nhusers%[email protected]>
>> .
>> > >> > For more options, visit this group at
>> > >> >http://groups.google.com/group/nhusers?hl=en.
>> >
>> > >> --
>> > >> You received this message because you are subscribed to the Google
>> Groups
>> > >> "nhusers" group.
>> > >> To post to this group, send email to [email protected].
>> > >> To unsubscribe from this group, send email to
>> > >> [email protected]<nhusers%[email protected]>
>> .
>> > >> For more options, visit this group at
>> > >>http://groups.google.com/group/nhusers?hl=en.
>> >
>> > > --
>> > > You received this message because you are subscribed to the Google
>> Groups
>> > > "nhusers" group.
>> > > To post to this group, send email to [email protected].
>> > > To unsubscribe from this group, send email to
>> > > [email protected]<nhusers%[email protected]>
>> .
>> > > For more options, visit this group at
>> > >http://groups.google.com/group/nhusers?hl=en.- Hide quoted text -
>> >
>> > - Show quoted text -
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<nhusers%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to