如何在Net Core中使用nhibernate配置与MySql的连接

时间:2019-04-10 16:51:45

标签: mysql asp.net-core nhibernate

我正在为网络核心中的api编程到数据库的连接。我决定禁止,但是我无法连接到mysql数据库,这是本地配置,我所拥有的是以下

那是我的CreateSessionFactory

私有静态ISessionFactory CreateSessionFactory()     {         尝试         {

        string connection = "server='localhost';Database='equalsbd';UserId='root';Password='123456';port=3304";

        var db = MySQLConfiguration.Standard.ConnectionString(connection);

        return Fluently.Configure().Database(db)
                     .Mappings(m => m.FluentMappings.AddFromAssemblyOf
                      <SessionNHibernate>()).BuildSessionFactory();
    }
    catch
    {
    }

    return null;
}

这是我的全班课

公共类SessionNHibernate {

private static ISessionFactory sessionFactory = null;
private static ISession session = null;

private static ISessionFactory SessionFactory
{
    get
    {
        if (SessionFactory == null)

            sessionFactory = CreateSessionFactory();

        return sessionFactory;

    }

}

public static ISession Session
{
    get { return session; }
}
public static ISession OpenSession() {
    try
    {
        session = SessionFactory.OpenSession();
        return session;
    }
    catch (Exception ex)
    {
        var p = ex;
        return session;
    }
}

public static void CloseSession()
{
    session.Close();
}
private static ISessionFactory CreateSessionFactory()
{
    try
    {


        string connection = "server='localhost';Database='equalsbd';UserId='root';Password='123456';port=3304";

        var db = MySQLConfiguration.Standard.ConnectionString(connection);

        return Fluently.Configure().Database(db)
                     .Mappings(m => m.FluentMappings.AddFromAssemblyOf
                      <SessionNHibernate>()).BuildSessionFactory();
    }
    catch
    {
    }

    return null;
}
  }

1 个答案:

答案 0 :(得分:0)

我所做的第一个更改是修改

    private static ISessionFactory sessionFactory = null;

作者

    private static ISessionFactory _sessionFactory = null;

防止混乱

第二个是通过将用户地图的私有属性更改为保护来更新用户地图,由于某种原因,该用户地图是私有的,不允许连接读取属性

以这种方式离开

这个

 public class Usuarios 
{
    public virtual long idUsuarios { get; private set; }
    public virtual string Usuario { get; private set; }
    public virtual string Password { get; private set; }
    public virtual string Perfiles_idPerfiles { get; private set; }

   public static List<Usuarios> ListaUsuario() {

        using (var session = SessionNHibernate.OpenSession() )
        {
            return session.Query<Usuarios>().ToList();
        }
    }
}

以正确的方式

  public class Usuarios 
{
    public virtual long idUsuarios { get; protected set; }
    public virtual string Usuario { get; protected set; }
    public virtual string Password { get; protected set; }
    public virtual string Perfiles_idPerfiles { get; protected set; }

   public static List<Usuarios> ListaUsuario() {

        using (var session = SessionNHibernate.OpenSession() )
        {
            return session.Query<Usuarios>().ToList();
        }
    }
}

与此相关,您与mysql的连接将可用或与任何其他数据库一起使用