首页 > 解决方案 > 使用 FluentNhibernate 和 Autofac 的映射接口

问题描述

我有一个棘手而极端的问题,我如何使用 FluentNHibernate 来映射接口?请按照下面的示例进行操作:我有一个界面:

public interface IUser
{
    String Name { get; set; }
    City City { get; set; }
}

我有一个实现这个接口的类:

public class User : IUser
{
    String Name { get; set; }
    ICity City { get; set; }
}

考虑女巫也存在一个 City 类并包含一个名为 Country 的属性,并且也存在于其接口中......我需要使用 FluentNHibernate 进行如下映射:

public class UserMap : ClassMap<IUser>
{
    public UserMap()
    {
       Map(e => e.Name);
       References<City>(x => x.City).Cascade.All();
    }
}
public class CityMap: ClassMap<ICity>
{
    public CityMap()
    {
        Map(e => e.Country);
    }
}

标签: c#nhibernateormmappingfluent-nhibernate

解决方案


看起来支持映射接口:

命名的持久类是一个接口是完全可以接受的。<subclass>然后,您将使用该元素声明该接口的实现类。

我想<subclass>,Fluent NHibernate 中的元素等价物是 。SubclassMap<T>因此,虽然不清楚你的实际问题是什么,但你可以试试这个:

public class UserMap : SubclassMap<IUser>
{
}

public class CityMap: SubclassMap<ICity>
{
}

推荐阅读