首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用FluentNHibernate的SaveOrUpdate上什么也不会发生

在使用FluentNHibernate的SaveOrUpdate上什么也不会发生
EN

Stack Overflow用户
提问于 2009-06-02 20:49:50
回答 2查看 4.6K关注 0票数 0

在FluentNHibernate中使用SaveOrUpdate方法更新实体时不会发生任何操作。Flush确实可以工作,但由于现有的存储库基础设施,我想使用SaveOrUpdate。可能的问题是什么?

配置:

代码语言:javascript
复制
sessionFactory = Fluently.Configure()
    .Database(MsSqlConfiguration
        .MsSql2005
            .ConnectionString(c => c.FromConnectionStringWithKey("repository")))
        .Mappings(m => m.FluentMappings
            .AddFromAssemblyOf<InvoiceMap>())
    .BuildSessionFactory();

映射:

代码语言:javascript
复制
public InvoiceMap()
{
    Id(x => x.InvoiceID, "InvoiceID");
    Map(x => x.InvoiceNumber);
    Map(x => x.InvoiceDate);
    Map(x => x.Company).CustomTypeIs<CompanyType>();
    Map(x => x.TransactionNumber).CustomTypeIs<TransactionNumberType>();
    Map(x => x.LongAddressBookNumber);
    Map(x => x.PurchaseOrderNumber);
    Map(x => x.ReceivedDateTime);
    Map(x => x.OCR);
    Map(x => x.DocumentNumber);
    Map(x => x.DocumentType);
    Map(x => x.PaymentStatus).CustomTypeIs<PaymentStatusType>();
    HasMany(x => x.Attestations)
        .KeyColumnNames.Add("InvoiceID")
        .Inverse()
        .Cascade.AllDeleteOrphan()
        .AsBag();
    HasMany(x => x.AttestationRequests)
        .KeyColumnNames.Add("InvoiceID")
        .Inverse()
        .Cascade.AllDeleteOrphan()
        .AsBag();
    HasMany(x => x.States)
        .KeyColumnNames.Add("InvoiceID")
        .Inverse()
        .Cascade.AllDeleteOrphan()
        .AsBag();
}

public AttestationMap()
{
    Id(x => x.ID, "AttestationID");
    Map(x => x.ReceivedAt);
    Map(x => x.IsInvalid, "Invalid");
    Map(x => x.InvalidationReason);
    Map(x => x.FileName);
    Map(x => x.FileData);
    References<EmployeeSnapshot>(x => x.Certifier, "Certifier")
        .Cascade.All()
        .FetchType.Join();
    References<Invoice>(x => x.Owner, "InvoiceID");
}

public AttestationReminderMap()
{
    Id(x => x.ID, "AttestationReminderID");
    Map(x => x.CC)
        .CustomTypeIs<RecipientType>();
    Map(x => x.Message);
    Map(x => x.SentAt);
    References<AttestationRequest>(x => x.Owner, "RequestID");
}

有什么想法吗?

谢谢,克里斯托弗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-02 21:01:05

当你说什么都没有发生的时候,你的意思是如果不刷新数据库,什么都不会发生?

如果是这样,这是预期的行为。Flush告诉NHib将它在内存中的更改写入DB。

票数 2
EN

Stack Overflow用户

发布于 2009-06-03 17:15:03

不知何故,我设法将会话的FlushMode设置为Never。正如查德向我描述的那样,这导致需要显式地调用Flush。当FlushMode将其保留为默认值时,并使用事务,实体将按预期更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/941843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档