Fluent nhibernate 在fluent nhibernate中,保存多对一实体,为什么我应该为引用的实体提供一个版本

Fluent nhibernate 在fluent nhibernate中,保存多对一实体,为什么我应该为引用的实体提供一个版本,fluent-nhibernate,version,many-to-one,Fluent Nhibernate,Version,Many To One,我拥有以下实体: 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;} p

我拥有以下实体:

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;}    
}
我用的是自动映射,用的是fluent 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并不重要。 我在数据库中保存了一个worker,workerID=1


我该怎么办?为什么我应该给工人一个版本???nhibernate是否确保工人被保存??为什么要这样做呢?

也许这就是场景:

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


但是,当您也为Work.Version提供值时,您就创建了一个有效的insert。

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

恐怕情况并非如此,在transferOrder表中,WorkerID是Worker表的外键。@Nour-外键可能也是如此,如果插入的唯一值是对定义为键的字段的插入,则插入将无效。那么,我如何确保?有关于这种情况的文件吗?