Перейти к содержанию

NHibernate и ASP.NET


Рекомендуемые сообщения

Использую: Visual Stuio 2008 C#, SQL Server 2005, NHibernate 3.2

В БД создаю базу BASA с виндовой аутентификацией. В базе таблицу USERS

Novyiy_tochechnyiy_risunok.jpg

В студии создаю WEB проект

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using NHibernate;

using NHibernate.Cfg;

using System.IO;

namespace WebApplication2

{

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

ISession session = NHibernateHelper.GetCurrentSession();

// ITransaction tx = session.BeginTransaction();

// IQuery query = session.CreateQuery("select * from users");

// tx.Commit();

// CMC.SDT.Library.NHibernateHelper.CloseSession();

}

}

public class USERS

{

private int users_id;

private string login;

private string parol;

private string rules;

public virtual int USERS_ID

{

get { return users_id; }

set { users_id = value; }

}

public virtual string LOGIN

{

get { return login; }

set { login = value; }

}

public virtual string PAROL

{

get { return parol; }

set { parol = value; }

}

public virtual string RULES

{

get { return rules; }

set { rules = value; }

}

}

public class NHibernateHelper

{

private const string CurrentSessionKey = "nhibernate.current_session";

private static readonly ISessionFactory sessionFactory;

static NHibernateHelper()

{

sessionFactory = new NHibernate.Cfg.Configuration().Configure().AddFile("hibernate.cfg.xml").BuildSessionFactory();

// sessionFactory = new NHibernate.Cfg.Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "hibernate.cfg.xml")).BuildSessionFactory();

}

public static ISession GetCurrentSession()

{

HttpContext context = HttpContext.Current;

ISession currentSession;

if (context == null)

{

currentSession = sessionFactory.OpenSession();

}

else

{

currentSession = context.Items[CurrentSessionKey] as ISession;

if (currentSession == null)

{

currentSession = sessionFactory.OpenSession();

context.Items[CurrentSessionKey] = currentSession;

}

}

return currentSession;

}

public static void CloseSession()

{

HttpContext context = HttpContext.Current;

if (context == null)

{

return;

}

ISession currentSession = context.Items[CurrentSessionKey] as ISession;

if (currentSession == null)

{

// No current session

return;

}

currentSession.Close();

context.Items.Remove(CurrentSessionKey);

}

public static void CloseSessionFactory()

{

if (sessionFactory != null)

{

sessionFactory.Close();

}

}

}

}

В классе USERS описываю эту таблицу (по спецификации хибернейте). Класс NHibernateHelper - советуют вставлять для облегчения работы.

Есть два XML файла: мапинг и подключение к базе

<?xml version="1.0" encoding="utf-8" ?>

schema="library" assembly="library" namespace="WebApplication2 ">

<?xml version="1.0" encoding="utf-8"?>

NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle

NHibernate.Connection.DriverConnectionProvider

NHibernate.Driver.SqlClientDriver

NHibernate.Dialect.MsSql2005Dialect

Server=localhost;Database=trpo_1;Trusted_Connection=Yes;

false


Проблема следующая: При нажатии кнопки (в начале описание события) вызывается констуктор класса NHibernateHelper. он лезет в XML подключения. XML подключения ссылается на мапинг (жирным выделено).

Выскакивается ошибка

Ambiguous mapping tag in configuration assembly=library resource= file=library.xml;

There are 3 possible combinations of mapping attributes

1 - resource & assembly: NHibernate will read the mapping resource from the specified assembly

2 - file only: NHibernate will read the mapping from the file.

3 - assembly only: NHibernate will find all the resources ending in hbm.xml from the assembly.

Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: NHibernate.Cfg.HibernateConfigException: Ambiguous mapping tag in configuration assembly=library resource= file=library.xml;

There are 3 possible combinations of mapping attributes

1 - resource & assembly: NHibernate will read the mapping resource from the specified assembly

2 - file only: NHibernate will read the mapping from the file.

3 - assembly only: NHibernate will find all the resources ending in hbm.xml from the assembly.

Ошибка источника:

Строка 197: {

Строка 198:

Строка 199: sessionFactory = new NHibernate.Cfg.Configuration().Configure().AddFile("hibernate.cfg.xml").BuildSessionFactory();

Строка 200: // sessionFactory = new NHibernate.Cfg.Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "hibernate.cfg.xml")).BuildSessionFactory();

Строка 201: }

Исходный файл: C:\Users\Алексей\Documents\Visual Studio 2005\Projects\WebApplication2\WebApplication2\Default.aspx.cs Строка: 199

Трассировка стека:

[HibernateConfigException]

NHibernate.Cfg.ConfigurationSchema.MappingConfiguration.Parse(XPathNavigator mappingElement) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\MappingConfiguration.cs:80

NHibernate.Cfg.ConfigurationSchema.MappingConfiguration..ctor(XPathNavigator mappingElement) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\MappingConfiguration.cs:19

NHibernate.Cfg.ConfigurationSchema.SessionFactoryConfiguration.ParseMappings(XPathNavigator navigator) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\SessionFactoryConfiguration.cs:69

NHibernate.Cfg.ConfigurationSchema.SessionFactoryConfiguration.Parse(XPathNavigator navigator) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\SessionFactoryConfiguration.cs:33

NHibernate.Cfg.ConfigurationSchema.SessionFactoryConfiguration..ctor(XPathNavigator hbConfigurationSection) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\SessionFactoryConfiguration.cs:17

NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration.Parse(XPathNavigator navigator, Boolean fromAppConfig) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\HibernateConfiguration.cs:79

NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader, Boolean fromAppSetting) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\HibernateConfiguration.cs:57

NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\ConfigurationSchema\HibernateConfiguration.cs:36

NHibernate.Cfg.Configuration.Configure(XmlReader textReader) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:1543

NHibernate.Cfg.Configuration.Configure(String fileName, Boolean ignoreSessionFactoryConfig) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:1465

NHibernate.Cfg.Configuration.Configure(String fileName) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:1450

NHibernate.Cfg.Configuration.Configure() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs:1436

WebApplication2.NHibernateHelper..cctor() in C:\Users\Алексей\Documents\Visual Studio 2005\Projects\WebApplication2\WebApplication2\Default.aspx.cs:199

[TypeInitializationException]

WebApplication2.NHibernateHelper.GetCurrentSession() in C:\Users\Алексей\Documents\Visual Studio 2005\Projects\WebApplication2\WebApplication2\Default.aspx.cs:220

WebApplication2._Default.Button1_Click(Object sender, EventArgs e) in C:\Users\Алексей\Documents\Visual Studio 2005\Projects\WebApplication2\WebApplication2\Default.aspx.cs:31

System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111

System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10

System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13

System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36

System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

Посоветуйте!(

Ссылка на комментарий
Ambiguous mapping tag in configuration assembly=library resource= file=...

There are 3 possible combinations of mapping attributes

1 - resource & assembly: NHibernate will read the mapping resource from the specified assembly

2 - file only: NHibernate will read the mapping from the file.

3 - assembly only: NHibernate will find all the resources ending in hbm.xml from the assembly.

Вот что за ошибка!!!!(((

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...