gpt4 book ai didi

nhibernate:如何映射引用实体的组件?

转载 作者:行者123 更新时间:2023-12-03 16:42:53 26 4
gpt4 key购买 nike

我的数据库看起来像这样:

MyEntity     State
----- -----
id id
street name
stateId ...
zip
status
...

我的模型看起来像这样:

class MyEntity
{
int id { get; set; }
Address location { get; set; }
string status { get; set; }
// ...
}

class Address
{
string street { get; set; }
string zip { get; set; }
State state { get; set; }
// ...
}

class State
{
int id { get; set; }
string name { get; set; }
// ...
}

我对引用实体的地址组件感到有点不自在。闻起来像一个糟糕的模型。是吗?如果没有,我将如何映射它(最好使用流利的 nhibernate)?

最佳答案

我也不确定如何从组件中引用实体。我自己也这样做过(与国家实体一样)。

就映射而言,它非常简单:

public class MyEntityMap : ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.id);
Component<Address>(x => x.location, c =>
{
c.Map(x => x.street);
c.Map(x => x.zip);
c.References<State>(x => x.state);
});
Map(x => x.status);
}
}

有时我所做的是为组件添加一个静态类,使 ClassMap 更好一些:

public static class NameMap
{
public static Action<ComponentPart<Name>> AsComponent(string prefix)
{
return c =>
{
c.Map(x => x.Title, ColumnName(prefix, "Title"));
// and so on
};
}
}

在这种情况下,ColumnName 是一个简单的函数,它将前缀附加到列名称(这在我开始使用的精彩遗留数据库中非常方便)。

然后在 ClassMap 中,您只需执行以下操作:

Component<Name>(x => x.Name, c => NameMap.AsComponent("prefix"));

关于nhibernate:如何映射引用实体的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com