gpt4 book ai didi

c# - 从 Entity_id 到 NHibernate 中的实体实例

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:05 27 4
gpt4 key购买 nike

我在弄清楚如何从包含每个外键 ID 的表单数据到使用流畅的 NHibernate 制作的实际模型时遇到了一些麻烦。

比如说我们有一个类:

public class Subcategory
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual Category Category { get; set; }
}

这是 map :

    public SubcategoryMap()
{
Table("subcategories");
Id(x => x.Id);
Map(x => x.Name);
References<Category>(x => x.Category);
}

现在,当有人发布表单数据以创建新的 Subcategory 时,它会以 ID (int) 的形式出现。我正在使用 Automapper BTW。从从客户端收到的模型出发的合适方法是什么(有或没有 Automapper):

public class SubcategoryDTO
{
public String Name { get; set; }
public int Category_id { get; set; }
}

回到上面的 Subcategory 类?

当然,我不必实际查询数据库来获取有问题的 Category,将其分配给 Subcategory 然后保存 Subcategory...

谢谢!

最佳答案

您想在 session 中使用 Load() 方法。

这是一篇非常古老的文章解释语法。

https://ayende.com/blog/3988/nhibernate-the-difference-between-get-load-and-querying-by-id

关键是

This is how NHibernate maintain the OO facade when giving you the same optimization benefits of working directly with the low level API.

是您不需要从数据库中获取和混合整个对象。

Load() 语法负责所有这一切。

所以

session.Save(new SubCategory { 
Name = subCategory.Name,
Category = session.Load<Category>(subCategory.Category_id)
};

将访问数据库 1 次

我认为您无法使用 Automapper 实现此目标。

关于c# - 从 Entity_id 到 NHibernate 中的实体实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374906/

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