所以,我有两个表,称之为User和Item。我希望每个用户都能够标记(类似于在Google宇宙中“关注”事物)任何项目。
现在,从集合论的角度来看,将其存储为用户和项目之间的简单关系应该是合理的。将此新表称为UserItemFlags。该表应该有两列;一个用于User表的外键,另一个用于Item表的外键。如果用户U标记了项目I,则通过在UserItemFlags表中存在行
现在,我在使用Fluent-NHibernate时遇到的问题是:我似乎无法理解如何处理
我很乐意接受关于正确方向的任何指引,即使这需要我在特定情况下放弃使用Fluent。
现在,从集合论的角度来看,将其存储为用户和项目之间的简单关系应该是合理的。将此新表称为UserItemFlags。该表应该有两列;一个用于User表的外键,另一个用于Item表的外键。如果用户U标记了项目I,则通过在UserItemFlags表中存在行
(U,I)
来表示这一点。现在,我在使用Fluent-NHibernate时遇到的问题是:我似乎无法理解如何处理
Id
映射。理想情况下,我不会有ID,因为除了存在或不存在用户和项目之间的关系之外,没有其他内容。这个模型的自然结果是,在表中无法有重复的行。这是一个期望的特性。using FluentNHibernate.Mapping;
public class UserItemFlagsMapping : ClassMap<UserItemFlags>
{
public UserItemFlagsMapping()
{
// Aaaa! I must have an Id!
References(x => x.User).Not.Nullable();
References(x => x.Item).Not.Nullable();
}
}
我很乐意接受关于正确方向的任何指引,即使这需要我在特定情况下放弃使用Fluent。
Id
方法来让它理解。 - Magnus Hoff