为什么不能立刻得到孩子的身份?

时间:2009-09-14 10:14:13

标签: nhibernate fluent-nhibernate

我现在已经在这2天苦苦挣扎,所以我想我会在这里试一试。

我的情景看起来像这样。我有一个客户和客户电话。现在我同时保存了客户和CustomerPhone,但CustomerPhone没有立即获得ID。但如果我重定向到其他网站并获得Customer对象,则CustomerPhone将具有Id。

这些类的代码看起来像这样。

public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual string OrgNumber { get; set; }
    public virtual DateTime? CreateDate { get; set; }
    public virtual bool Active { get; set; }
    public virtual string Email { get; set; }

    public virtual IList<CustomerPhone> CustomerPhones { get; set; }

    public Customer()
    {
        CustomerPhones = new List<CustomerPhone>();
    }

    public virtual void AddCustomerPhones(CustomerPhone customerPhone)
    {
        customerPhone.Customer = this;
        CustomerPhones.Add(customerPhone);
    }

我使用流畅的nhibernate进行映射,但我已经看过了它,它似乎不是问题。

如果您对此有任何想法,请写信,因为这对我来说是个大问题。

2 个答案:

答案 0 :(得分:2)

这是因为您的会话可能是基于请求的。因此,在您的请求结束时,它会自动刷新。没有刷新,你的东西只是在Nhib会话中,并没有添加到数据库中,因此它没有在数据库中生成的Id。 (我假设你使用主键的身份)

手动冲洗它,你将拥有ID。

答案 1 :(得分:1)

在没有看到你的映射的情况下,我只能给出一般建议......但是我之前遇到过这种情况,当时NHibernate在其会话中有一些待更改。对session.Flush()的调用通常会通过持久化实体并获取ID值来排除“问题”。

干杯, 约翰