如何使用由其他复杂类型组成的NHibernate保存实体,但我只有其他复杂类型的ID

Jon*_*son 3 c# nhibernate

我正在开发我的第一个NHibernate项目,所以这似乎是一个简单的问题.

以下是从我的真实场景简化来传达具体问题.

可以说我有一个客户实体

public class Customer
{
    prop virtual int ID { get; set; }
    prop virtual string Name { get; set; }
    prop virtual Region Region { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和我的区域实体(区域就像,NorthWest,MidWest等 - 一个非常明确的列表,可以在某种下拉列表中)

public class Region
{
    prop virtual int ID { get; set; }
    prop virtual string Name { get; set; }
    private readonly IList<Customer> _customers = new List<Customer>();

    public virtual void Add(Customer customer)
    {
        _customers.Add(customer);
    }

    public virtual void Remove(Customer customer)
    {
        _customers.Remove(customer);
    }

    public virtual Customer[] GetCustomers()
    {
        return _customers.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我去坚持客户实体时,我真的只想拥有3条信息(Customer.ID,Customer.Name和Customer.Region.ID),我该如何实现这一点,因为NHibernate需要一个包含Customer的实体一个完整的Region实体(不仅仅是ID)......

Gar*_*ler 6

您可以使用Load来按ID获取Region,而无需访问数据库.这将为您提供一个NHibernate将识别的实体,并允许您在没有额外数据库调用的情况下持久化.

参考