Я отображаю ряд классов членства для моего приложения с помощью Быстрого 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 таблицу
Так..., как я делаю этот вид отображения предположения, что я не могу изменить свою схему базы данных?