c# - NHibernate 删除我的行

标签 c# asp.net nhibernate

我正在研究 NHibernate,当我测试它时,我尝试列出 Oracle 数据库中的所有数据。但是 NHibernate 正确访问了我的数据库,但删除了我的所有数据,而不是仅仅读取我的数据。

(我可以连接到数据库,没有问题,只是它没有询问就删除了我的所有数据。)

这是我的代码:

NHibernateSession:

public class NHibernateSession
{
    public static ISession OpenSession()
    {
        return CreateSessionFactory().OpenSession();
    }
    private static ISessionFactory CreateSessionFactory()
    {

        var cfg = OracleClientConfiguration.Oracle9
            .ConnectionString(c =>
                c.Is("DATA SOURCE=xe.world;PERSIST SECURITY INFO=True;USER ID=apismart;Password=APISMART"));
        var sessionFactory = Fluently.Configure()
                .Database(cfg)
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<MesureMap>().ExportTo(@".\"))
                .ExposeConfiguration(BuildSchema)
        .BuildSessionFactory();

        return sessionFactory;
    }

    private static void BuildSchema(NHibernate.Cfg.Configuration config)
    {
        new SchemaExport(config)
          .Create(false, true);
    }
}

}

进入我的 MesuresController :

    public int Get()
    {
        using (ISession session = NHibernateSession.OpenSession())
        {
            RucheRepository repo = new RucheRepository(session);
            IQueryable<Ruche> result = repo.GetAll();
            return result.Count();
        }

    }

存储库:

public class RucheRepository : IRucheRepository
{
    protected ISession Session;
    public RucheRepository(ISession session)
    {
        this.Session = session;
    }

    public Ruche Get(int idRuche)
    {
        return Session.Query<Ruche>().Where(ruche => ruche.Id == idRuche).FirstOrDefault<Ruche>();
    }

    public IQueryable<Ruche> GetAll()
    {
        return Session.Query<Ruche>();
    }
}

最佳答案

问题来自您的 BuildSchema() 方法。每次执行此操作时,数据库都会被删除并重新创建。改用这个:

private static void BuildSchema(NHibernate.Cfg.Configuration config)
{
    new SchemaUpdate(config)
      .Execute(false, true);
}

它只会更新您的架构,而不会重新创建它。

关于c# - NHibernate 删除我的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501593/

相关文章:

c# - 如何取消绑定(bind)ObjectDataSource?

nhibernate - 正确使用NHibernate工作单元模式和Ninject

nhibernate - 无法从NHibernate.Driver.SQLiteDriver创建驱动程序

c# - USB 闪存驱动器模拟(如 cd/dvd rom 虚拟驱动器)-是否可能

c# - 从客户端对象 API 访问 TFS 团队查询

c# - 创建成员(member)用户时出错 "The password-answer supplied is invalid"

c# - 需要 javascript 验证下拉列表

c# - NHibernate 设置 : Should I override Equals and GetHashCode?

c# - C# 中的 64 位指针算法,检查算术溢出更改行为

c# - MVVM跨WPF区域实现