【问题标题】:How to include records from 2 db tables into a single view using NHibernate / Fluent NHibernate?如何使用 NHibernate / Fluent NHibernate 将 2 个 db 表中的记录包含到单个视图中?
【发布时间】:2021-10-02 15:48:20
【问题描述】:

我是 NHibernate / Fluent NHibernate 的新手(本周末开始使用它),我在解决以下问题时遇到了困难。

我有 2 个 SQL Server 表:

[Client]

ID        INT          NOT NULL IDENTITY(1,1)
Name      VARCHAR(100) NOT NULL
Email     VARCHAR(255) NOT NULL
BirthDate DATE

[Phones]

ID       INT         NOT NULL IDENTITY(1,1)
Number   VARCHAR(14)
Category INT
ClientID INT         NOT NULL     
         FOREIGN KEY REFERENCES [Client](ID),

POCO 课程:

public class Clients
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string Email { get; set; }
    public virtual DateTime BirthDate { get; set; }
    public virtual Phones Phones { get; set; }
}

public class Phones
{
    public virtual int ID { get; set; }
    public virtual string Number { get; set; }
    public virtual PhoneCategory.PCategory Category { get; set; }
    public virtual Clients Client { get; set; }
}

public static class PhoneCategory
{
    public enum PCategory
    {
        Personal,
        Comercial,
        Residential,
        Other
    }
}

映射:

public class ClientsMap : ClassMap<Clients>
{
    public ClientsMap()
    {
        Table("Clients");
        Id(x => x.ID);
        Map(x => x.Name);
        Map(x => x.Email);
        Map(x => x.BirthDate);
        References(x => x.Phones).Column("ClientID").Cascade.All();
    }
}

public class PhonesMap : ClassMap<Phones>
{
    public PhonesMap()
    {
        Table("Phones");
        Id(x => x.ID);
        Map(x => x.Number);
        Map(x => x.Category).CustomType<PhoneCategory.PCategory>();
    }
}

我的 Clients 类视图工作正常,我可以保存、更新、列出和删除。但是我怎么能包含 Phones 类的记录呢?

【问题讨论】:

    标签: c# asp.net-core nhibernate fluent-nhibernate fluent-nhibernate-mapping


    【解决方案1】:

    您需要使用HasMany() 方法,而不是ClientsMap 中的References(x =&gt; x.Phones).Column("ClientID").Cascade.All(); 行。

    例如

    HasMany(c => c.Phones)
    

    文档here

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 2010-10-17
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多