我有一种情况,我在我的域模型中定义了一个实体,我希望在其中公开一个id列。
public class OfferedProduct
{
public virtual string Id {get; set;}
//other properties
}
这将映射到的遗留数据库表是
CREATE TABLE ProductGrouping
MemberNumber INT NOT NULL,
GroupId CHAR NOT NULL,
...
我不想通过引入两个属性并使用“CompositeId”构造映射它们来破坏域模型。
CompositeId().KeyProperty(x => x.MemberNumber).KeyProperty(x => x.GroupId)
理想情况下,我希望以{MemberNumber} {GroupId}的形式连接这两个值,并将其作为Id值公开。然后,我将使用自定义类型来处理从数据库中检索时这些值的连接方式,以及在保存/选择时将其拆分。
我注意到“CompositeId”方法不允许使用标准“Id”调用的customType;但“Id”方法不提供设置多个列的功能。我见过一些例子,人们使用“Map”来使用自定义类型组合两列,但不是id值。
我注意到“CompositeId”有一个可以采用自定义标识类的重载,但我不确定如何在这种情况下使用它。
CompositeId<OfferedProductIdentifier>(x => x.?)
非常感谢任何帮助。
答案 0 :(得分:0)
如果有人来这里
CompositeId()
.KeyProperty(t => t.Id, c =>
c.Type(typeof(MyUserType)).ColumnName("MemberNumber").ColumnName("GroupId"));