Исходя из моего опыта, Fluent NHibernate отлично работает на Mono.
На самом деле я только вчера получил эту работу.К сожалению, у меня нет своего кода передо мной, но я дам вам несколько советов, пока не смогу опубликовать рабочий код ...
Я предполагаю, что вы загрузили MySql.Data.dll и ссылается на него в вашем проекте Mono.Следует обратить внимание на то, что после загрузки этот файл обычно называется MySQL.Data.dll .Он должен быть переименован в MySql.Data.dll (обратите внимание на изменение регистра в ' Q ' и ' L ').
Затем библиотека должна быть зарегистрирована в GAC для работы с Mono.Простое размещение файла в относительном пути и ссылка на него не работает (я не совсем уверен, почему).Более подробная информация - здесь .
gacutil /i MySql.Data.dll
Если она все еще не работает, вам, возможно, потребуется написать драйвер, который начинается с NHibernate.Driver.ReflectionBasedDriver .Это очень маленький фрагмент кода, который я опубликую позже, когда смогу добраться до него.
Редактировать: Вот драйвер MySQL, который я использую.
public class MySqlDriver : NHibernate.Driver.ReflectionBasedDriver
{
public MySqlDriver() : base(
"MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d",
"MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d",
"MySql.Data.MySqlClient.MySqlCommand, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
) { }
public override bool UseNamedPrefixInParameter
{
get { return true; }
}
public override bool UseNamedPrefixInSql
{
get { return true; }
}
public override string NamedPrefix
{
get { return "@"; }
}
public override bool SupportsMultipleOpenReaders
{
get { return false; }
}
}
... ифабричные функции сеанса
private string _ConnectionString = "";
private ISessionFactory CreateSessionFactory()
{
return Fluently.Configure().Database(
MySQLConfiguration.Standard.Driver<MySqlDriver>().ConnectionString(_ConnectionString)
).Mappings(
m => m.FluentMappings.AddFromAssemblyOf<YourType>()
).ExposeConfiguration(
BuildSchema
).BuildSessionFactory();
}
private void BuildSchema(Configuration config)
{
//new SchemaExport(config).Create(false, true);
new SchemaUpdate(config).Execute(false, true);
}