В моей бизнес-модели у меня есть "Роль пользователя" объект и один (или нулевой) объект "RoleFunctionality", возложенные на него:Fluent NHibernate One-To-ZeroOrOne Mapping
"UserRole"
(
id integer NOT NULL,
name character varying(255),
CONSTRAINT "UserRole_pkey" PRIMARY KEY (id)
)
"RoleFunctionality"
(
roleid integer NOT NULL,
functionalities character varying(255) NOT NULL,
CONSTRAINT fk1 FOREIGN KEY (roleid)
REFERENCES "UserRole" (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Я хотел бы иметь их в качестве Связь один-к-одномуOrZero. Мои объекты и отображения ниже:
public class UserRole
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual RoleFunctionality Functionalities { get; set; }
}
public class UserRoleMap : ClassMap<UserRole>
{
UserRoleMap()
{
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name);
HasOne(x => x.Functionalities);
}
}
public class RoleFunctionality
{
public virtual int RoleId { get; set; }
public virtual UserRole Role { get; set; }
public virtual string Functionalities { get; set; }
}
public class RoleFunctionalityMap : ClassMap<RoleFunctionality>
{
RoleFunctionalityMap()
{
Id(x => x.RoleId);
Map(x => x.Functionalities);
HasOne(x => x.Role).Constrained().ForeignKey("fk1");
}
}
Everythings отлично работает, когда есть «RoleFunctionality» существует для «UserRole» - SaveOrUpdate() на работах красиво.
Но у меня есть исключение, когда я хотел бы удалить «UserRole» с помощью «RoleFunctionality» или когда я хотел бы обновить «UserRole» новыми «RoleFunctionalities», которые раньше были null.
Где проблема? Заранее спасибо.
Вы можете поделиться с нами исключением? – Mert
* Если немного возможно, я бы предложил - облегчить вашу жизнь проще - попытаться преобразовать это во много-к-одному. Самая большая проблема с индивидуальным с моей точки зрения - это всегда загружать оба. Играйте с .., но постарайтесь подумать об этом * –