我有问题,节省了当我使用的GUID标识符。能够 有人瑟我在这里缺少什么?创建我自己的GUID,所以我不希望它被数据库产生。
注:我曾在映射guid.combo到没有任何成功。
公共类订单
{
公共虚拟的Guid标识{获取;组; }
公共虚拟的ICollection<订单项>的OrderItems {获得;组; }
公共虚拟用户用户{获得;组; }
公共虚拟日期时间? CREATEDATE {获得;组; }
公共虚拟日期时间?发货日期{获得;组; }
公共虚拟字符串OrderStatus {获得;组; }
公安()
{
的OrderItems =新的集合<订单项>();
}
公共虚拟无效AddOrderItems(订单项订单项)
{
orderItem.Order =这一点;
OrderItems.Add(订单项);
}
}
OrderMap:
公共OrderMap()
{
ID(X => x.Id)。.ColumnName(ID)GeneratedBy.Guid();
地图(X => x.CreateDate);
地图(X => x.ShippedDate);
地图(X => x.OrderStatus);
参考文献(X => x.User);
的hasMany(X => x.OrderItems)。.Cascade.All()反向()LazyLoad();
}
解决方案
ID(X => x.Id).ColumnName(ID)。GeneratedBy.Assigned()
此外.WithUnsavedValue(Guid.Empty)可能是必要的,但我不知道。你可能需要告诉NHibernate的使用保存或更新(不SaveOrUpdate)各一次,反正。不是一个大的专家在这里...但你需要使用.Assigned()是肯定的。
i got problems with saving when i use Guid as identifier. can anybody se what i am missing here? i create my own guid so i dont want it to be generated by database.
NOTE: i have tried the guid.combo in mapping to without any success.
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();
}
解决方案
Id(x => x.Id).ColumnName("Id").GeneratedBy.Assigned()
Also .WithUnsavedValue(Guid.Empty) might be needed but I'm not sure. You'll probably need to tell NHibernate to use Save or Update (not SaveOrUpdate) each time, anyway. Not a big expert here... but you need to use .Assigned() for sure.