FluentNHibernate:当多个是一个简单的枚举时如何处理一对多的值

syd*_*yos 2 fluent-nhibernate

似乎以下场景应该并不少见,但我无法弄清楚如何在 FluenNHibernate 中处理它:

public class Product: BaseEntity
{
    public Product()
    {
        Categories = new List<Category>();
    }

    public virtual IList<Category> Categories { get; set; }
    ...
}

public enum Categories
{
    Classic = 1,
    Modern = 2,
    Trendy = 3,
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以,我需要一个 ProductCategories 表,它允许我将一个产品映射到多个类别,但我认为 NHibernate 不会处理这个问题,除非我有一个实际的 Categories 类和一个指定了多对多关系的 Categories 表。这有很多原因是不可取的,其中最重要的是它太过分了。

我正在使用 AutoMapper - 我可以通过什么方式覆盖以使其工作?

谢谢!

小智 5

这个接受的答案对我有用,但是枚举被映射为 int。

为了将其映射为字符串(我的偏好),我按如下方式调整了映射:

public void Override(AutoMapping<Account> mapping)
{
    mapping
        .HasMany(x => x.Categories)
        .Table("CategoriesProductsMap")
        .Element("Category", e => e.Type<NHibernate.Type.EnumStringType<Category>>())
        .AsSet();
}
Run Code Online (Sandbox Code Playgroud)