Быстрый NHibernate - Как к карте a не nullable внешний ключ, который существует в двух объединяемых таблицах

Я отображаю ряд классов членства для моего приложения с помощью Быстрого NHibernate. Я отображаю классы на структуру базы данных членства asp.net. Схема базы данных, относящаяся к проблеме, похожа на это:

ASPNET_USERS
UserId        PK
ApplicationId FK NOT NULL
other user columns ...

ASPNET_MEMBERSHIP
UserId        PK,FK
ApplicationID FK NOT NULL
other membership columns...

Между этими двумя таблицами существует связь "один к одному". Я пытаюсь присоединиться к этим двум таблицам вместе и данным карты от обеих таблиц до единственного 'Пользовательского' объекта, который похож на это:

public class User
{
    public virtual Guid Id { get; set; }
    public virtual Guid ApplicationId { get; set; }

    // other properties to be mapped from aspnetuser/membership tables ...

Мой файл отображения следующие:

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Table("aspnet_Users");
        Id(user => user.Id).Column("UserId").GeneratedBy.GuidComb();
        Map(user => user.ApplicationId);
        // other user mappings

        Join("aspnet_Membership", join => {
            join.KeyColumn("UserId");
            join.Map(user => user.ApplicationId);
            // Map other things from membership to 'User' class
        }
    }
}

Если я пытаюсь работать с кодом выше, я получаю исключение FluentConfiguration

Попробованный для добавления свойства 'ApplicationId', когда уже добавлено.

Если я удаляю строку "Карта (пользователь => пользователь. ApplicationId)"; или измените его для "Отображения (пользователь => пользователь. ApplicationId).Not. Обновление ().Not. Вставьте ()"; затем выполнение приложения, но я получаю следующее исключение при попытке ввести нового пользователя:

Не может вставить ПУСТОЙ УКАЗАТЕЛЬ значения в столбец 'ApplicationId', таблицу 'ASPNETUsers_Dev.dbo.aspnet_Users'; столбец не позволяет, аннулирует. ВСТАВЬТЕ сбои. Оператор был завершен.

И если я оставляю.Map (пользователь => пользователь. ApplicationId), поскольку это первоначально было, и внесите любое из тех изменений в соединении. Карта (пользователь => пользователь. ApplicationId) затем я добираюсь, то же исключение выше кроме, конечно, исключения связано со вставкой в aspnet_Membership таблицу

Так..., как я делаю этот вид отображения предположения, что я не могу изменить свою схему базы данных?

11
задан vakman 20 April 2010 в 23:06
поделиться