Как настроить подключение к MySQL с помощью nhibernate в net core

#mysql #asp.net-core #nhibernate

#mysql #asp.net-core #nhibernate

Вопрос:

Я программирую подключение к базе данных для API в net core. Я решил запретить, но я не могу подключиться к базе данных 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:

первое изменение, которое я внес, состояло в том, чтобы изменить

     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 будет работать или с любой другой базой данных