Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以引用作为属性的Nhibernate映射值对象_C#_.net_Hibernate_Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# 以引用作为属性的Nhibernate映射值对象

C# 以引用作为属性的Nhibernate映射值对象,c#,.net,hibernate,nhibernate,nhibernate-mapping,C#,.net,Hibernate,Nhibernate,Nhibernate Mapping,我有以下实体 国家,州,城市 我还有用户实体 国家,州和城市与用户实体没有关系。 用户与国家、州或城市没有直接关系 我希望能够更新用户地址详细信息的方式 用户将选择国家、州和城市并保存这些值。 我想引入Addressvalue对象,它将存储这个用户地址信息 这是个好主意吗?您将如何处理这种情况 我正在使用nhibernate orm,并使用Conformist(代码映射方法)进行映射 所以我想把地址映射为值对象 Component(c => c.Address, AddressMap.Ma

我有以下实体
国家
城市

我还有
用户
实体

国家
和城市与用户实体没有关系。
用户
国家
城市
没有直接关系

我希望能够更新用户地址详细信息的方式 用户将选择国家、州和城市并保存这些值。 我想引入
Address
value对象,它将存储这个用户地址信息

这是个好主意吗?您将如何处理这种情况

我正在使用nhibernate orm,并使用Conformist(代码映射方法)进行映射 所以我想把地址映射为值对象

Component(c => c.Address, AddressMap.Mapping());

public class AddressMap
    {
        public static Action<IComponentMapper<Address>> Mapping()
        {
            return c =>
            {
                c.Property(p => p.Country);
                c.Property(p => p.State);                    
                c.Property(p => p.City);
            };
        }
    }
我有以下错误

“NHibernate.SessionProvider”的类型初始值设定项引发错误 例外。{“无法确定的类型为:Model.Country,…,for” columns:NHibernate.Mapping.Column(国家)“}


没有这一行
组件(c=>c.Address,AddressMap.Mapping())
UserMap
中,我没有任何错误(我也没有映射Address-value对象:)。

我想说,这里的问题来自这样一个事实,
Country
将不是值类型(包括字符串),而是一个引用。如果是这种情况,我们不能将其映射为
c.Property()
,而是作为参考:

c.ManyToOne(p => p.Country, "CountryId"); // reference

c.Property(p => p.State);                 // value types represented 
c.Property(p => p.City);                  // by values in columns
请参阅:了解更多详细信息

ManyToOne(x => x.PropertyName, m =>
{
    m.Column("column_name");
    // or...
    m.Column(c =>
    {
        c.Name("column_name");
        // other standard column options
    });
    ...
    // many more
ManyToOne(x => x.PropertyName, m =>
{
    m.Column("column_name");
    // or...
    m.Column(c =>
    {
        c.Name("column_name");
        // other standard column options
    });
    ...
    // many more