Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I get back a strongly typed collection that queries multiple entities with Castle's ActiveRecord?
    primarykey
    data
    text
    <p>I'm trying to get a specific set of data while joining 4 different entities together to do so. What I've done is setup a DTO to try to get this working:</p> <pre><code>public class LatestThread { private readonly string comment; private readonly DateTime posted; private readonly string userName; private readonly int reputation; private readonly int threadId; private readonly string topic; private readonly int userId; private readonly string avatar; public LatestThread(string comment, DateTime posted, string userName, int reputation, int threadId, string topic, int userId, string avatar) { this.comment = comment; this.avatar = avatar; this.userId = userId; this.topic = topic; this.threadId = threadId; this.reputation = reputation; this.userName = userName; this.posted = posted; } public string Comment { get { return comment; } } public DateTime Posted { get { return posted; } } public string UserName { get { return userName; } } public int Reputation { get { return reputation; } } public int ThreadId { get { return threadId; } } public string Topic { get { return topic; } } public int UserId { get { return userId; } } public string Avatar { get { return avatar; } } } </code></pre> <p>Now I thought I could use SimpleQuery like so:</p> <pre><code>string hql = string.Format("select new LatestThread(m.Comment, m.Posted, u.UserName, u.Reputation, t.Id, t.Topic, u.Id, u.Avatar) from Thread as t inner join Message as m on t.Id = m.ThreadId inner join User as u on u.Id = m.PostedById inner join Activity as a on a.Id = t.ActivityId where a.Lineage like '{0}%' order by t.LastPosted desc", activityLineage); </code></pre> <p>return repository.SimpleQuery(0, 10, hql);</p> <p>My repository method looks like:</p> <pre><code> public virtual IList&lt;T&gt; SimpleQuery&lt;T&gt;(int firstResult, int maxResults, string hql, params object[] parameters) { var query = new SimpleQuery&lt;T&gt;(hql, parameters); query.SetQueryRange(firstResult, maxResults); return query.Execute(); } </code></pre> <p>Now it's asking for me to put [ActiveRecord] at the top of my LatestThread class. When I do that it wants a primary key, and that just seems to be the wrong route.</p> <p>I've also read bits that refer to the Import attribute given to classes that aren't the DTO. In all the examples though it's just two entities being joined, not the 4 I have. Do I need to add Import to all 4? Or is there something to tell AR that it's a readonly DTO class? OR am I doing this all wrong and there's a really easy way to do what I'm trying to do.</p> <p>TIA!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload