gpt4 book ai didi

nhibernate - 流畅的 NHibernate HasMany 不插入父 ID

转载 作者:行者123 更新时间:2023-12-03 23:58:38 24 4
gpt4 key购买 nike

我无法弄清楚为什么 NHibernate 插入没有外键的子实体。这是我的课

public class Order {
public Order() {
this.Notes = new List<OrderNote>();
}

public virtual int OrderId {get; private set;}
public virtual IList<OrderNote> Notes {get; private set;}
}

public class OrderNote {
public OrderNote(string noteBy, string note) {
this.OrderNoteId = Guid.NewGuid();
this.NoteBy = noteBy;
this.Note = note;
}

public virtual Guid OrderNoteId {get; private set;}
public virtual string NoteBy {get; private set;}
public virtual string Note {get; private set;
}

这是我的 Fluent NHibernate 映射文件
public class OrderClassMap : ClassMap<Order> {
public OrderClassMap() {
Id(x => x.OrderId).GeneratedBy.Native();
HasMany(x => x.Notes).Inverse.KeyColumn("OrderId").Cascase.AllDeleteOrphan();
}
}

public class OrderNoteClassMap : ClassMap<OrderNote> {
public OrderNoteClassMap() {
Id(x => x.OrderNoteId).GeneratedBy.Assigned();
Map(x => x.NoteBy);
Map(x => x.Note);
}
}

当我向订单的备注集合添加备注并保存订单时,订单备注被插入到没有外键的数据库中。
Order order = session.Query<Order>().Where(o => (o.OrderId == orderId)).Single();
order.Notes.Add(new OrderNote("Name", "This is a note"));
session.SaveOrUpdate(order);

生成的插入语句是这样的:
INSERT INTO OrderNotes(OrderNoteId, NoteBy, Note)

它应该是:
INSERT INTO OrderNotes(OrderNoteId, NoteBy, Note, OrderId)

为什么会这样?我究竟做错了什么?

最佳答案

添加 Order您的属性(property)OrderNote类并将其设置为您要添加注释的订单对象。

还要添加 References(x => x.Order);给您的 OrderNoteClassMap
您也可以尝试删除 Inverse在您的 HasMany映射,但我认为这不会做到。

关于nhibernate - 流畅的 NHibernate HasMany 不插入父 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6343922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com