流畅的NHibernate与键/值列关系

时间:2017-11-21 14:26:50

标签: c# fluent-nhibernate

我正在尝试创建一个可用作另一个表的附加数据的表。

  • 例如,我的主表名为 Person 。此表将包含名为 PersonDynamicInfo 的表中的零个或多个动态记录(自由文本键和自由文本值)。

    public PersonMap(){   Id(x => x.Id);   表("人&#34);   地图(x => x.Name);

    HasMany(x => x.PersonDynamicInfo)     .KeyColumn("标识&#34)     .Access.CamelCaseField(Prefix.Underscore)     .AsSet()     .Cascade.AllDeleteOrphan()     .Not.KeyNullable(); }

    public PersonDynamicInfo(){   Id(x => x.Id);   表(" PersonDynamicInfo&#34);   地图(x => x.Key);
      Map(x => x.Value); }

我想要实现的目标如下:

  • 当我访问 Person 对象时,我希望能够编辑Person.PersonDynamicInfo,以便此表上的信息与对象相同。让我们举例说,我在PersonDynamicInfo上创建了一个记录值为:" 键: A | 价值:TEST "。当我访问Person对象时,我将删除所有Person.PersonDynamicInfo(来自集合)并添加一个新对象:" 密钥: B | 价值:TEST "和Save()这个Person对象。 会发生什么是Person.PersonDynamicInfo将包含两个记录而不是仅包含最后一个记录。

我是否可以在不手动删除PersonDynamicInfo上未使用的记录的情况下实现此目的?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为您需要的是对Person映射中PersonDynamicInfo的引用:

public PersonDynamicInfo(){ 
    Id(x => x.Id); 
    Table("PersonDynamicInfo"); 
    Map(x => x.Key);
    Map(x => x.Value);
    References(x => x.Person, "PersonId").Cascade.All(); 
} 
但是,我可能误解了你的问题。