0

それぞれ 2 つのインターフェイス IVisita と ICliente を実装する 2 つのエンティティ Visita と Cliente があります。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 とのインターフェイスのマッピングに関して、SO には既に同様の質問があります。

また、James Gregory は彼の回答で良い点を挙げています。ドメインモデル内のインターフェースは実際に価値を提供しますか?

于 2012-06-13T14:33:07.513 に答える