Я использую nhibernate для сопоставления следующих классов:
public class DeviceConfig : EntityBase
{
public virtual string Name
{
get { return m_Name; }
set { SetValue(ref m_Name, value); }
}
public virtual string Description
{
get { return m_Description; }
set { SetValue(ref m_Description, EmptyStringIfValueNull(value)); }
}
}
public class DeviceConfigEmail : DeviceConfig
{
public virtual string SmtpServer
{
get { return m_SmtpServer; }
set { SetValue(ref m_SmtpServer, EmptyStringIfValueNull(value)); }
}
}
public class DeviceConfigSMS : DeviceConfig
{
public virtual string SmsServer
{
get { return m_SmsServer; }
set { SetValue(ref m_SmsServer, EmptyStringIfValueNull(value)); }
}
}
С помощью следующего файла сопоставления:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="field.pascalcase-m-underscore">
<class name="MyNamespace.DeviceConfig, MyNamespace" table="DeviceConfig" lazy="false">
<id name="ID" access="property" column="DeviceConfigID" unsaved-value="-1">
<generator class="identity" />
</id>
<discriminator column="Discriminator"/>
<version name="Version" column="Version"/>
<property name="Name" not-null="true"/>
<property name="Description" not-null="true"/>
<subclass name="MyNamespace.DeviceConfigEmail, MyNamespace" discriminator-value="Email" lazy="false">
<property name="SmtpServer" not-null="true" />
</subclass>
<subclass name="MyNamespace.DeviceConfigSMS, MyNamespace" discriminator-value="SMS" lazy="false">
<property name="SmsServer" not-null="true" />
</subclass>
</class>
</hibernate-mapping>
Я делаю моделирование данных таблицы для каждой иерархии в таблице следующим образом:
table: DeviceConfig
- DeviceConfigID (PK, int, not null)
- Discriminator (varchar(20), not null)
- Name (varchar(50), not null)
- Description (varchar(200), not null)
- SmtpServer (varchar(30), null)
- SmsServer (varchar(30), null)
Это все хорошо и работает против моей базы данных SQL.
Теперь я хочу сделать SchemaExport, чтобы провести тестирование памяти на Sqlite. Когда я создаю эту таблицу с помощью экспорта схемы, столбцы SmtpServer и SmsServer генерируются как не пустые.
Что-то я делаю не так? Как я могу создать эти столбцы как допускающие значение NULL?
Спасибо,
Павел