使用 FluentNhibernate 和 Autofac 的映射接口
Posted
技术标签:
【中文标题】使用 FluentNhibernate 和 Autofac 的映射接口【英文标题】:Mapping interface using FluentNhibernate and Autofac 【发布时间】:2018-12-17 11:52:02 【问题描述】:我有一个棘手而极端的问题,我如何使用 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);
【问题讨论】:
【参考方案1】:映射接口好像是supported:
命名的持久类是一个接口是完全可以接受的。然后,您将使用
<subclass>
元素声明该接口的实现类。
我想,<subclass>
元素在 Fluent NHibernate 中的等价物是 SubclassMap<T>
。因此,虽然不清楚你的实际问题是什么,但你可以试试这个吗:
public class UserMap : SubclassMap<IUser>
public class CityMap: SubclassMap<ICity>
【讨论】:
以上是关于使用 FluentNhibernate 和 Autofac 的映射接口的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 FluentNHibernate 创建 ISessionFactory
如何使用 Fluent NHibernate 自动映射禁用特定抽象基类的子类化
使用FluentNHibernate引用的CustomType
FluentNHibernate - 如何在没有任何身份字段的情况下进行映射