0

我有两个实体 Visita 和 Cliente,它们分别实现了两个接口 IVisita 和 ICliente。IVisita 包含对 ICliente 的引用,我如何配置此地图?

public class Visita : IVisita
{
    public virtual int Id { get; protected set; }

    public virtual ICliente Cliente { get; set; }
}

public class VisiteMap : ClassMap<Domain.Visita>
{
    public VisiteMap()
    {
        Table("Visite");
        Id(x => x.Id);

        References(x => x.Cliente)
            .Class(typeof(Domain.Cliente))
            .Not.Nullable();
    }
}

测试失败,出现异常“对于属性 'Cliente' 预期类型 'Vendor.Domain.Cliente' 但得到了 'Vendor.Domain.ICliente'”

    [TestMethod]
    public void VisitePersistence()
    {
        var sessionFactory = Vendor.Persistenza.Database.CreateSessionFactory(true);
        using (var session = sessionFactory.OpenSession())
        {
            var cliente = new Cliente() { ... };

            using (var tran = session.BeginTransaction())
            {
                session.SaveOrUpdate(cliente);
                tran.Commit();
            }

            new PersistenceSpecification<Visita>(session)
                .CheckReference(x=> x.Cliente, cliente)
                .VerifyTheMappings();
        }
    }
4

1 回答 1

0

关于使用 FluentNHibernate 映射接口,已经有一个类似的问题。

此外,詹姆斯格雷戈里在他的回答中提出了一个很好的观点。领域模型中的接口是否真的提供了任何价值?

于 2012-06-13T14:33:07.513 回答