0

我有以下实体:

public class Worker
{
 public int WorkerID {get;set;}
 public string Name { get;set;}
 public int version { get;set;}
}

public class TransferOrder
{
  public int TransferOrderID { get;set;}
  public Worker workerTobeTransfered{get;set;}
  public int version { get;set;}    
}

我正在使用流利的nhibernate中的自动映射。当我尝试像这样保存 TransferOrder 时:

TransferOrder order = new TransferOrder();
order.Worker = new Worker(){WorkerID = 1};
Session.Save(order);

但是在数据库中,TransferOrder 表中的workerID 为NULL???但是当我给工人一个版本时,它会正常保存吗?

TransferOrder order = new TransferOrder();
order.Worker = new Worker(){WorkerID = 1,Version = 1};
Session.Save(order);

请注意,只要不为 0,为工作人员提供的版本号并不重要。我在数据库中保存了一个工作人员 ID = 1 的工作人员。

我该如何处理?为什么我应该给工人一个版本???是 nhibernate 确保工人被保存?为什么它应该这样做?

4

2 回答 2

0

也许这就是场景:

您的 Work.WorkerID 是 Work 表中的一个标识列,您不能在表中插入仅包含一个标识列条目的行。

但是,当您也为 Work.Version 提供值时,您将创建一个有效的插入。

于 2010-10-06T14:35:33.993 回答
0

“版本”可能会自动映射到 NHibernate 属性以进行乐观并发检查。我会使用 Fluent NHibernate 生成映射 XML 以查看它正在使用什么,因为我无法通过 Google 找到任何关于 auto mapped 的默认设置的信息。

于 2010-10-07T20:30:40.667 回答