gpt4 book ai didi

nhibernate - Session.Save() 不与 NHibernate.JetDriver 一起保存

转载 作者:行者123 更新时间:2023-12-04 04:39:53 24 4
gpt4 key购买 nike

我正在使用 NHibernate.JetDriver 将我的实体保存在 Microsoft Access 数据库中。
我有一个名为 Employee 的简单表,有 3 列:

  • Id(自动生成的号码)
  • 名字(文本)
  • 姓氏(文本)

  • 这是对应的实体:
    class Employee
    {
    public virtual int Id { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    }

    和映射(使用 Fluent NHibernate):
    class EmployeeMap : ClassMap<Employee>
    {
    public EmployeeMap()
    {
    Id(x => x.Id)
    .GeneratedBy.Native();
    Map(x => x.FirstName);
    Map(x => x.LastName);
    }
    }

    然后我有以下代码来配置 SessionFactory(使用 Fluent NHibernate),创建一个新员工并将其保存到数据库中:
    var sessionFactory = Fluently.Configure()
    .Database(JetDriverConfiguration.Standard
    .ConnectionString(@"Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=.\Company.accdb")
    .ShowSql)
    .Mappings(m => m.FluentMappings
    .AddFromAssemblyOf<EmployeeMap>())
    .BuildSessionFactory();

    var employee = new Employee
    {
    FirstName = "Laurent",
    LastName = "De Cant"
    };

    using (var session = sessionFactory.OpenSession())
    {
    using (var transaction = session.BeginTransaction())
    {
    var id = session.Save(employee);
    transaction.Commit();
    }
    }

    我的问题如下:该员工似乎没有保留在数据库中。
    我也不异常(exception),Save返回的id是正确的。一切似乎都很好,只是当我检查表中的数据时,没有员工......

    使用 ShowSql 选项,这里是生成的 SQL:
    NHibernate: INSERT INTO `Employee` (FirstName, LastName) VALUES (?, ?);
    @p0 = 'Laurent' [Type: String (7)], @p1 = 'De Cant' [Type: String (7)]
    NHibernate: select @@identity

    这是 NHibernate 分析器给我的:
    -- statement #1
    begin transaction with isolation level: Unspecified

    -- statement #2
    INSERT INTO `Employee`
    (FirstName,
    LastName)
    VALUES (?,
    ?)

    -- statement #3
    select @@identity

    -- statement #4
    commit transaction

    最佳答案

    您可能正在查看错误的数据库。在构建过程中,数据库文件被复制到输出文件夹。如果您检查输出文件夹中的数据库,员工记录将出现。

    关于nhibernate - Session.Save() 不与 NHibernate.JetDriver 一起保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058186/

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