Исключая столбец на вставке - PullRequest
0 голосов
/ 01 апреля 2011

Есть ли какой-либо способ, который вы можете указать в Fluent NHibernate, чтобы пропустить столбец всякий раз, когда он вставляет запись, если свойство objects имеет значение null или какое-либо другое конкретное значение?По совпадению столбец, который я хочу опустить, является Ссылкой в ​​моем отображении.Вот мой сценарий:

public class OrderLineMap : ClassMap<OrderLine>
{
    public OrderLineMap()
    {
        Table("ORDER_LINE");
        Id(x => x.Id, "ORDER_LINE_ID");

        //USER_ID is a GUID.  Column default in DB is Guid.Empty
        References(x => x.User, "USER_ID").Cascade.SaveUpdate();
    }
}

У меня есть OrderLine, который имеет ссылку на пользователя, но эта ссылка не обязательно присутствует во время создания заказа.Он может быть обновлен позднее.Так как здесь есть отношение внешнего ключа, существует столбец по умолчанию GUID.Empty, который будет обрабатывать вставку без указания этого столбца.В таблице Users также есть «пустой» пользователь.

В настоящее время я нахожу этого «пустого» пользователя в базе данных и настраиваю ссылку User моего объекта OrderLine на этот экземпляр.Этот способ кажется мне неуклюжим, и я искал лучший способ сделать это.У меня есть несколько таких отношений в моей базе данных.

1 Ответ

1 голос
/ 01 апреля 2011

Если столбец USER_ID таблицы ORDER_LINE не допускает нулевые значения, вы, вероятно, застряли в текущей настройке.Если он допускает пустые значения, тогда вы должны установить тип свойства User как Guid?и убедитесь, что для него задано значение null, прежде чем сохранять класс OrderLine.Таким образом, значение столбца устанавливается равным нулю в базе данных, и для обеспечения ссылочной целостности не потребуется строка «Пустой» в таблице «Пользователи».

...