繁体   English   中英

流利的NHibernate,具有键/值列关系

[英]Fluent NHibernate with Key/Value Column Relation

我正在尝试创建一个表,该表将用作另一个表的其他数据。

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

    公共PersonMap(){Id(x => x.Id); Table(“ Person”); Map(x => x.Name);

    HasMany(x => x.PersonDynamicInfo).KeyColumn(“ Id”).Access.CamelCaseField(Prefix.Underscore).AsSet().Cascade.AllDeleteOrphan().Not.KeyNullable(); }

    公共PersonDynamicInfo(){Id(x => x.Id); Table(“ PersonDynamicInfo”); Map(x => x.Key);
    映射(x => x.Value); }

我要实现以下目标:

  • 访问Person对象时,我希望能够编辑Person.PersonDynamicInfo,以使此表上的信息与该对象相同。 例如,假设我创建了一个在PersonDynamicInfo上具有记录的人,其值是:“ 键: A | :TEST ”。 当我访问Person对象时,我将从集合中删除所有Person.PersonDynamicInfo并添加一个新对象:“ 键: B | :TEST ”并保存()此Person对象。 将会发生的是Person.PersonDynamicInfo将包含两个记录,而不是仅包含最后一个。

有没有我可以手动删除PersonDynamicInfo上未使用的记录的方法?

非常感谢!

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

public PersonDynamicInfo(){ 
    Id(x => x.Id); 
    Table("PersonDynamicInfo"); 
    Map(x => x.Key);
    Map(x => x.Value);
    References(x => x.Person, "PersonId").Cascade.All(); 
} 

但是,我可能误解了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM