gpt4 book ai didi

linq - nhibernate 2 linq 急切加载

转载 作者:行者123 更新时间:2023-12-01 04:21:13 25 4
gpt4 key购买 nike

我从 nHibernate 开始,有一个简单的例子,我无法按照自己的意愿工作。

我有两个模型对象(博客和帖子),我想在一个场景的单个查询中加载它们。我想在其他情况下延迟加载。

我天真地认为我可以写这样的东西:

var blogs = session.Linq<Blog>().Expand("Posts");

但这将为我的每篇文章提供一个博客实例,而不是将文章添加到博客中。

我知道我在做一些愚蠢的事情。有人可以指出它是什么吗?我是否需要在 linq 查询中关联帖子和博客实体?

代码和映射:
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>

最佳答案

在搜索其他论坛后(也许我应该先正确完成此操作!)我正在使用此解决方案:

var blogs = session.Linq<Blog>();
blogs.QueryOptions.RegisterCustomAction(
criteria => criteria.SetResultTransformer(new DistinctRootEntityResultTransformer()));
var results = blogs.Expand("Posts");

我不想使用 Distinct 因为我想返回 IQueryable

似乎工作。我只需要知道理论:)

http://nhforge.org/wikis/howtonh/get-unique-results-from-joined-queries.aspx

关于linq - nhibernate 2 linq 急切加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1737985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com