В настоящее время я использую перечисление в NHibernate, отображаемое следующим образом.
public enum UploadMethod
{
Java, Silverlight, Gears, Flash
}
class UploadMethodType : EnumStringType
{
public UploadMethodType() : base(typeof(UploadMethod), 255) { }
}
public class Person
{
/* Bunch of non interesting properties... */
public UploadMethod PreferredUploadMethod { get; set; }
}
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Person" lazy="false" table="[dbo].[People]">
<!-- Bunch of non interesting properties... -->
<property name="PreferredUploadMethod" type="UploadMethodType" />
</class>
</hibernate-mapping>
Что работает отлично, за исключением того, что база данных далека от нормализации, каждая строка в таблице People имеет столбец, содержащий одну из четырех текстовых строк. Теперь я разделил это на новую таблицу, но я не уверен, как создать отображение в NHibernate. Мой первый инстинкт был просто <many-to-one>
, но я не хочу, чтобы это перечисление было его собственной сущностью, мне просто нужно, чтобы NHibernate сделал простое соединение, чтобы привязать дополнительный столбец.
В качестве пробела я только что создал представление, которое работает нормально, но я бы предпочел, чтобы слой абстракции был в моем отображении NHibernate, а не в схеме.