Je commence avec nHibernate et j'ai un exemple simple que je ne peux pas travailler comme je le voudrais.nhibernate 2 linq eager load
J'ai deux objets de modèle (Blog et Posts) et je voudrais les charger tous dans une seule requête pour un scénario. Je veux un chargement paresseux dans d'autres cas.
Je pensais naïvement que je pouvais écrire quelque chose comme ceci:
var blogs = session.Linq<Blog>().Expand("Posts");
Mais cela va me donner un exemple de blog pour chaque poste plutôt que d'ajouter des messages sur le blog. Je sais que je fais quelque chose de stupide. Quelqu'un peut-il s'il vous plaît préciser ce que c'est? Est-ce que j'ai besoin de relier les entités post et blog dans ma requête linq?
codeet Mappages:
public class Blog
{
public Blog()
{
Posts = new HashSet<Post>();
}
public virtual long Identifier { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Post> Posts { get; set; }
public virtual Post AddPost(Post post)
{
post.Blog = this;
Posts.Add(post);
return post;
}
}
public class Post
{
public virtual long Identifier { get; set; }
public virtual string Name { get; set; }
public virtual Blog Blog { get; set; }
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="nhibEx" namespace="nhibEx">
<class name="Blog" lazy="true">
<id name="Identifier">
<generator class="native" />
</id>
<property name="Name" not-null="true" length="100"/>
<set name="Posts" inverse="true" cascade="save-update" lazy="true">
<key column="BlogIdentifier" foreign-key="fk_Post_Blog"/>
<one-to-many class="Post"/>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="nhibEx" namespace="nhibEx">
<class name="Post" lazy="true">
<id name="Identifier">
<generator class="native" />
</id>
<property name="Name" not-null="true" length="255"/>
<many-to-one name="Blog" column="BlogIdentifier" class="Blog" />
</class>
</hibernate-mapping>
Merci Paco et Alexey. Tu as raison, ça fait l'affaire. Je vais poster sur l'autre forum pour essayer de comprendre pourquoi il se comporte de cette façon. – LostSilver