在对象映射中通过构造器创建对象

时间:2019-03-17 23:27:25

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有以下地址对象:

public class AddressObject
{
    public string Postcode { get; set; }
    public string City { get; set; }
    public string Street { get; set; }

    public AddressObject(string PostCodeString, string CityName, string StreetName)
    {
        Postcode = PostCodeString;
        City = CityName;
        Street = StreetName;
    }

    public AddressObject(string PostCodeString, string CityName)
    {
        Postcode = PostCodeString;
        City = CityName;
    }

    public AddressObject() { }
}

下面我想根据上面的构造函数使用以下流利的映射:

Map(x => x.AddressObject).Column("PostCode", "Name").Not.LazyLoad();

是否可以在流畅的映射类中使用对象构造函数?

2 个答案:

答案 0 :(得分:1)

从文档中:

  

... NHibernate要求将实体类的所有公共属性声明为虚拟。它还需要一个无参数的构造函数:如果添加具有参数的构造函数,请确保也添加无参数的构造函数。 (ref

答案 1 :(得分:-1)

不,没有!你为什么喜欢这样?

首先,您错过了AddressObject属性上的虚拟关键字。

第二个Map-Method映射每列的值,因此没有实体被映射,而是一个值(字符串,枚举,整数等)。

如果要引用其他模型中的AddressObject,则必须使用 Reference(x => ...