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