【发布时间】:2009-07-27 18:31:28
【问题描述】:
首先,我有下表:
CREATE TABLE CustomerHub (
CustomerId INT NOT NULL,
HubId INT NOT NULL
)
我已经映射到这个实体:
public class CustomerHub
{
public int CustomerId {get;set;}
public int HubId {get;set}
//GetHashCode, Equals, Etc...
}
使用此映射:
public class CustomerHubMap : ClassMap<CustomerHub>
{
UseCompositeId()
.WithKeyProperty(x => x.CustomerId)
.WithKeyProperty(x => x.HubId);
}
我遇到的问题是,当我创建一个 CustomerHub 类型的新实体并尝试保存它时,数据库中没有任何内容。我能够很好地检索所有内容,只是不保存它们。例如:
//this will work
var x = session.CreateCriteria(typeof(CustomerHub));
//this will not
using (var trans = session.BeginTransaction())
{
var custHub = new CustomerHub {CustomerId = 293, HubId = 1193};
var y = session.SaveOrUpdate(custHub);
trans.Commit();
}
奇怪的是没有抛出异常,它只是什么都不做。我启动了 NH Profiler(出色的工具!),看起来它没有向数据库发出任何类型的插入命令。
想法?
注意:我意识到这个表看起来很像一个连接表(因为它在技术上是)并且最好用作另一个实体(如客户)上的多对多关系......但由于一些非常混乱的数据设计(即没有 Hub 表)将连接表映射到实体并以这种方式使用它要简单得多。
【问题讨论】:
标签: nhibernate fluent-nhibernate