Fluent NHibernateに切り替えただけで、問題が発生し、その情報が見つかりませんでした。Fluent NHibernate、インターフェイスで動作する
ここケースです:
public class Field : DomainObject, IField
{
public Field()
{
}
public virtual string Name { get; set; }
public virtual string ContactPerson { get; set; }
public virtual bool Private { get; set; }
public virtual IAddress Address { get; set; }
}
IAddressは、住所
public class Address : DomainObject, IAddress
{
public Address()
{
}
public virtual string City { get; set; }
public virtual string Country { get; set; }
public virtual string PostalCode { get; set; }
public virtual string StreetAddress { get; set; }
}
ここでは、両方のクラスのための私のマッピングファイル
ADDRESS
public class AddressMap : ClassMap<Address>
{
public AddressMap()
{
WithTable("Addresses");
Id(x => x.Id, "Id").Access.AsCamelCaseField(Prefix.Underscore).GeneratedBy.Guid();
Map(x => x.City, "City");
Map(x => x.Country, "Country");
Map(x => x.PostalCode, "PostalCode");
Map(x => x.StreetAddress, "StreetAddress");
}
}
だというクラスによって実装されるインタフェースであり、
FIELD
public class FieldMap : ClassMap<Field>
{
public FieldMap()
{
WithTable("Fields");
Id(x => x.Id, "Id").Access.AsCamelCaseField(Prefix.Underscore).GeneratedBy.Guid();
Map(x => x.Name, "Name");
Map(x => x.ContactPerson, "ContactPerson");
Map(x => x.Private, "Private");
References(x => x.Address, "AddressId").Cascade.Delete().Cascade.SaveUpdate();
}
}
私は私のデータベースからフィールドオブジェクトをretriveしようとしたときに、私はIAddressがマップされていないと述べてNHibernateのエラーを取得します。 NHibernateにマッピングでAddressクラスを使用するよう指定する方法はありますか?
詳細情報が必要な場合は教えてください。あなたのFieldオブジェクトで
どうもありがとう、
チャールズ
データベースでIAddress階層をどのようにモデリングしていますか?階層あたりのテーブル(すべてのタイプのアドレスを保持する1つのテーブル)またはconcrete-per-class? Fluentに切り替えたと言ったので、XMLマッピングの例を投稿することで、達成しようとしていることを判断するのに役立ちます。 –
実際、私はADO.NET Entity FrameworkからFluent NHibernateでNhibernateに切り替えました。私のデータベースには、すべてのタイプのアドレスを保持するテーブルがあります。ところで、私はこれらのインターフェイスを削除することに決めました。私はそれが役に立たないことに気付きました。しかし、私はその質問がまだ有効だと思う。 おかげで、 チャールズ –