不会保存到数据库的GUID ID-流畅,nhiberate流畅、数据库、ID、GUID

2023-09-06 08:24:23 作者:您的智商余额已不足

我有问题,节省了当我使用的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.