无法将数据更新/插入数据库 这是我的表格:
角色(身份证,姓名,......)
特权(身份证,姓名,......)
RolePrivilege(Id,RoleId,PrivilegeId,IsAllowed)
我有地图:
public class RoleWithPrivilegesEntityMap : ClassMap<RoleWithPrivilegesEntity>
{
public RoleWithPrivilegesEntityMap()
{
Table( "ROLE" );
Not.LazyLoad();
Id( x => x.Id, "ID" ).GeneratedBy.Identity();
Map( x => x.Name, "NAME" ).Not.Nullable().Length( 100 );
HasMany(x => x.RolePrivileges)
.Cascade.AllDeleteOrphan()
.Inverse()
.Fetch.Join().KeyColumn("RoleId");
}
}
public class PrivilegeEntityMap : ClassMap<PrivilegeEntity>
{
public PrivilegeEntityMap()
{
Table("PRIVILEGE");
Id(x => x.Id, "ID").GeneratedBy.Identity();
Map(x => x.Name, "NAME").Not.Nullable();
HasMany(x => x.RolePrivileges)
.Cascade.AllDeleteOrphan()
.Inverse()
.Fetch.Join().KeyColumn("PrivilegeId");
}
}
public class RolePrivilegeEntityMap : ClassMap<RolePrivilegeEntity>
{
public RolePrivilegeEntityMap()
{
Table("ROLEPRIVILEGE");
Id(x => x.Id, "R_ID").GeneratedBy.Identity();
Map(x => x.IsAllowed, "ISALLOWED").Not.Nullable();
References(x => x.Role)
.Not.Nullable()
.Column("R_ID");
References(x => x.Privilege)
.Not.Nullable()
.Column("P_ID");
}
}
我正在尝试更新现有记录
session.SaveOrUpdate(rolePrivilege)
数据库make insert into RolePrivilege,但我需要先删除记录。
我做错了什么?
答案 0 :(得分:0)
通常没有任何内容会进入数据库,因为您从不致电session.Flush()
或transaction.Commit()
。但是使用Id generation Identity,您基本上会强制NHibernate立即插入,因此您会看到INSERT语句。
您还可以删除RolePrivilegeEntity
中的ID并在Role and Priviledge上形成compositeId,这也可以提高性能(无需立即插入)。