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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在对象映射中通过构造函数创建对象相关的知识,希望对你有一定的参考价值。

我有以下Address对象:

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();

有没有办法在流畅的映射类中使用对象构造函数?

答案

从文档:

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

另一答案

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

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

其次,Map-Method映射每列的值,因此没有映射实体,只有一个值(string,enum,int等)。

如果你想从其他模特中引用AddressObject你必须使用Reference(x => ...

以上是关于在对象映射中通过构造函数创建对象的主要内容,如果未能解决你的问题,请参考以下文章

将 XML 序列化为对象

通过构造函数创建新对象时,new操作符具体做了什么?

java中静态代码块构造代码块构造方法main函数的执行顺序?

使用python中的构造函数限制在单例类中创建对象

Objective-C中如何创建构造函数呢?

我可以让 Hibernate 通过工厂方法创建一个对象吗?