注意:我已经尝试将guid.combo映射到没有任何成功。
public class Order
{
public virtual Guid Id { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
public virtual User User { get; set; }
public virtual DateTime? CreateDate { get; set; }
public virtual DateTime? ShippedDate { get; set; }
public virtual string OrderStatus { get; set; }
public Order()
{
OrderItems = new Collection<OrderItem>();
}
public virtual void AddOrderItems(OrderItem orderItem)
{
orderItem.Order = this;
OrderItems.Add(orderItem);
}
}
OrderMap:
public OrderMap()
{
Id(x => x.Id).ColumnName("Id").GeneratedBy.Guid();
Map(x => x.CreateDate);
Map(x => x.ShippedDate);
Map(x => x.OrderStatus);
References(x => x.User);
HasMany(x => x.OrderItems).Cascade.All().Inverse().LazyLoad();
}
答案 0 :(得分:2)
Id(x =&gt; x.Id).ColumnName(“Id”)。GeneratedBy.Assigned()
另外。可能需要使用UnwedavedValue(Guid.Empty),但我不确定。无论如何,您可能需要告诉NHibernate每次都使用Save或Update(而不是SaveOrUpdate)。这里不是一个大专家......但你需要使用.Assigned()肯定。
答案 1 :(得分:0)
你不必添加GeneratedBy.Guid()它也可以正常使用GeneratedBy.GuidComb();建议使用guid
答案 2 :(得分:0)
您可以在将实体插入数据库之前生成guid。这样做的好处是实体在数据库中的持久性之前和之后都是相同的。它使得忽略代码中的数据库变得更容易。
public class Order
{
public Order()
{
Id = GuidGenerator.GenerateGuid();
}
public Guid Id { get; private set; }
}
public class Mapping
{
Id(x => x.Id).GeneratedBy.Assigned().Access.AsCamelCaseField();
}
GuidGenerator.GenerateGuid()返回由guid梳算法生成的guid或类似Guid.NewGuid()
的guid