通过单向映射和Cascade.All集合,是否可以只保存一个孩子,通过设置有效的FK然后执行Save或SaveOrUpdate?
如果我创建新订单,设置有效的Account_ ID并执行SaveOrUpdate,则帐户 _id在数据库中设置为NULL,而实体仍然具有先前设置的Account_id。
为什么呢?我可以修改SaveOrUpdate方法以使其工作吗?
public class Account
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Order> Orders { get; set; }
//...
}
public class Order
{
public int Id { get; set; }
public int Account__id { get; set; }
public decimal Price { get; set; }
//...
}
映射:
public class AccountMap : ClassMap<Account>
{
public AccountMap()
: base()
{
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Name);
HasMany(x => x.Orders).KeyColumn("Account__id").Cascade.All();
}
}
存储库:
public void SaveOrUpdate(T instance)
{
using (ISession session = FnhManager.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
lock (instance)
{
session.SaveOrUpdate(instance);
transaction.Commit();
}
}
}
}
答案 0 :(得分:0)
您似乎没有在订单映射类中映射Account__id
列。试着把
Map(x => x.Account_id)
到你的OrderMap课程。