You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
(248) |
May
(82) |
Jun
(90) |
Jul
(177) |
Aug
(253) |
Sep
(157) |
Oct
(151) |
Nov
(143) |
Dec
(278) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(152) |
Feb
(107) |
Mar
(177) |
Apr
(133) |
May
(259) |
Jun
(81) |
Jul
(119) |
Aug
(306) |
Sep
(416) |
Oct
(240) |
Nov
(329) |
Dec
(206) |
2006 |
Jan
(466) |
Feb
(382) |
Mar
(153) |
Apr
(162) |
May
(133) |
Jun
(21) |
Jul
(18) |
Aug
(37) |
Sep
(97) |
Oct
(114) |
Nov
(110) |
Dec
(28) |
2007 |
Jan
(74) |
Feb
(65) |
Mar
(49) |
Apr
(76) |
May
(43) |
Jun
(15) |
Jul
(68) |
Aug
(55) |
Sep
(63) |
Oct
(59) |
Nov
(70) |
Dec
(66) |
2008 |
Jan
(71) |
Feb
(60) |
Mar
(120) |
Apr
(31) |
May
(48) |
Jun
(81) |
Jul
(107) |
Aug
(51) |
Sep
(80) |
Oct
(83) |
Nov
(83) |
Dec
(79) |
2009 |
Jan
(83) |
Feb
(110) |
Mar
(97) |
Apr
(91) |
May
(291) |
Jun
(250) |
Jul
(197) |
Aug
(58) |
Sep
(54) |
Oct
(122) |
Nov
(68) |
Dec
(34) |
2010 |
Jan
(50) |
Feb
(17) |
Mar
(63) |
Apr
(61) |
May
(84) |
Jun
(81) |
Jul
(138) |
Aug
(144) |
Sep
(78) |
Oct
(26) |
Nov
(30) |
Dec
(61) |
2011 |
Jan
(33) |
Feb
(35) |
Mar
(166) |
Apr
(221) |
May
(109) |
Jun
(76) |
Jul
(27) |
Aug
(37) |
Sep
(1) |
Oct
(4) |
Nov
(2) |
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jul...@us...> - 2011-02-27 12:39:09
|
Revision: 5403 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5403&view=rev Author: julian-maughan Date: 2011-02-27 12:39:03 +0000 (Sun, 27 Feb 2011) Log Message: ----------- Fixed mapping error in documentation (ref. NH-2506). Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/collection_mapping.xml Modified: trunk/nhibernate/doc/reference/modules/collection_mapping.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/collection_mapping.xml 2011-02-26 17:50:12 UTC (rev 5402) +++ trunk/nhibernate/doc/reference/modules/collection_mapping.xml 2011-02-27 12:39:03 UTC (rev 5403) @@ -961,7 +961,7 @@ <programlisting><![CDATA[<map name="Contracts" lazy="true"> <key column="employer_id"/> <index-many-to-many column="employee_id" class="Employee"/> - <one-to-many column="contract_id" class="Contract"/> + <one-to-many class="Contract"/> </map>]]></programlisting> <programlisting><![CDATA[<map name="Connections" lazy="true"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2011-02-26 17:50:18
|
Revision: 5402 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5402&view=rev Author: ricbrown Date: 2011-02-26 17:50:12 +0000 (Sat, 26 Feb 2011) Log Message: ----------- Updated failed test verification (on other DBs) to prevent ignored tests failing the build. Modified Paths: -------------- trunk/nhibernate/teamcity.build Modified: trunk/nhibernate/teamcity.build =================================================================== --- trunk/nhibernate/teamcity.build 2011-02-26 15:41:57 UTC (rev 5401) +++ trunk/nhibernate/teamcity.build 2011-02-26 17:50:12 UTC (rev 5402) @@ -138,6 +138,13 @@ return result; } + + public override string ToString() + { + string prefix = "IGNORED - "; + if (Executed) prefix = Success ? "PASS - " : "FAIL - "; + return prefix + Name; + } public static IList<Result> ParseFile(string file) { @@ -189,7 +196,7 @@ if (newTests.Count > 0) { foreach(Result result in newTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + report.AppendLine(result.ToString()); } else report.AppendLine("None"); @@ -206,7 +213,7 @@ if (fixedTests.Count > 0) { foreach(Result result in fixedTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + report.AppendLine(result.ToString()); } else report.AppendLine("None"); @@ -221,16 +228,33 @@ if (missingTests.Count > 0) { foreach(Result result in missingTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + report.AppendLine(result.ToString()); } else report.AppendLine("None"); + + IList<Result> ignoredTests = new List<Result>(); + foreach(Result afterResult in afterExistingTests) + foreach(Result beforeResult in before) + if (beforeResult.Name == afterResult.Name) + if (beforeResult.Executed && !afterResult.Executed) + ignoredTests.Add(afterResult); + report.AppendLine(); + report.AppendLine("*** Tests ignored since last recorded results ***"); + if (ignoredTests.Count > 0) + { + foreach(Result result in ignoredTests) + report.AppendLine(result.ToString()); + } + else + report.AppendLine("None"); + IList<Result> brokenTests = new List<Result>(); foreach(Result afterResult in afterExistingTests) foreach(Result beforeResult in before) if (beforeResult.Name == afterResult.Name) - if (beforeResult.Success && !afterResult.Success) + if (beforeResult.Success && afterResult.Executed && !afterResult.Success) brokenTests.Add(afterResult); report.AppendLine(); @@ -238,7 +262,7 @@ if (brokenTests.Count > 0) { foreach(Result result in brokenTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + report.AppendLine(result.ToString()); } else report.AppendLine("None"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-26 15:42:04
|
Revision: 5401 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5401&view=rev Author: julian-maughan Date: 2011-02-26 15:41:57 +0000 (Sat, 26 Feb 2011) Log Message: ----------- Added IsOpen and IsConnected properties (ref. NH-2445). Also, reviewed and tidied XML comment blocks. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/IStatelessSession.cs Modified: trunk/nhibernate/src/NHibernate/IStatelessSession.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2011-02-26 10:38:07 UTC (rev 5400) +++ trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2011-02-26 15:41:57 UTC (rev 5401) @@ -14,7 +14,7 @@ /// transactional write-behind or automatic dirty checking, nor do /// operations cascade to associated instances. Collections are /// ignored by a stateless session. Operations performed via a - /// stateless session bypass Hibernate's event model and + /// stateless session bypass NHibernate's event model and /// interceptors. Stateless sessions are vulnerable to data /// aliasing effects, due to the lack of a first-level cache. /// <para/> @@ -23,102 +23,122 @@ /// </remarks> public interface IStatelessSession : IDisposable { - /// <summary> Get the current Hibernate transaction.</summary> - ITransaction Transaction { get;} + /// <summary> + /// Returns the current ADO.NET connection associated with this instance. + /// </summary> + /// <remarks> + /// If the session is using aggressive connection release (as in a + /// CMT environment), it is the application's responsibility to + /// close the connection returned by this call. Otherwise, the + /// application should not close the connection. + /// </remarks> + IDbConnection Connection { get; } + + /// <summary>Get the current NHibernate transaction.</summary> + ITransaction Transaction { get; } + + /// <summary> + /// Is the <c>IStatelessSession</c> still open? + /// </summary> + bool IsOpen { get; } /// <summary> + /// Is the <c>IStatelessSession</c> currently connected? + /// </summary> + bool IsConnected { get; } + + /// <summary> /// Gets the stateless session implementation. /// </summary> /// <remarks> /// This method is provided in order to get the <b>NHibernate</b> implementation of the session from wrapper implementations. - /// Implementors of the <seealso cref="IStatelessSession"/> interface should return the NHibernate implementation of this method. + /// Implementors of the <seealso cref="IStatelessSession "/> interface should return the NHibernate implementation of this method. /// </remarks> /// <returns> - /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface + /// An NHibernate implementation of the <see cref="ISessionImplementor "/> interface /// </returns> ISessionImplementor GetSessionImplementation(); - /// <summary> Close the stateless session and release the ADO.NET connection.</summary> + /// <summary>Close the stateless session and release the ADO.NET connection.</summary> void Close(); - /// <summary> Insert a entity.</summary> - /// <param name="entity">A new transient instance </param> - /// <returns> the identifier of the instance </returns> + /// <summary>Insert an entity.</summary> + /// <param name="entity">A new transient instance</param> + /// <returns>The identifier of the instance</returns> object Insert(object entity); - /// <summary> Insert a row. </summary> - /// <param name="entityName">The entityName for the entity to be inserted </param> - /// <param name="entity">a new transient instance </param> - /// <returns> the identifier of the instance </returns> + /// <summary>Insert a row.</summary> + /// <param name="entityName">The name of the entity to be inserted</param> + /// <param name="entity">A new transient instance</param> + /// <returns>The identifier of the instance</returns> object Insert(string entityName, object entity); - /// <summary> Update a entity.</summary> - /// <param name="entity">a detached entity instance </param> + /// <summary>Update an entity.</summary> + /// <param name="entity">A detached entity instance</param> void Update(object entity); - /// <summary>Update a entity.</summary> - /// <param name="entityName">The entityName for the entity to be updated </param> - /// <param name="entity">a detached entity instance </param> + /// <summary>Update an entity.</summary> + /// <param name="entityName">The name of the entity to be updated</param> + /// <param name="entity">A detached entity instance</param> void Update(string entityName, object entity); - /// <summary> Delete a entity. </summary> - /// <param name="entity">a detached entity instance </param> + /// <summary>Delete an entity.</summary> + /// <param name="entity">A detached entity instance</param> void Delete(object entity); - /// <summary> Delete a entity. </summary> - /// <param name="entityName">The entityName for the entity to be deleted </param> - /// <param name="entity">a detached entity instance </param> + /// <summary>Delete an entity.</summary> + /// <param name="entityName">The name of the entity to be deleted</param> + /// <param name="entity">A detached entity instance</param> void Delete(string entityName, object entity); - /// <summary> Retrieve a entity. </summary> - /// <returns> a detached entity instance </returns> + /// <summary>Retrieve a entity.</summary> + /// <returns>A detached entity instance</returns> object Get(string entityName, object id); - /// <summary> Retrieve a entity. - /// + /// <summary> + /// Retrieve an entity. /// </summary> - /// <returns> a detached entity instance - /// </returns> + /// <returns>A detached entity instance</returns> T Get<T>(object id); /// <summary> - /// Retrieve a entity, obtaining the specified lock mode. + /// Retrieve an entity, obtaining the specified lock mode. /// </summary> - /// <returns> a detached entity instance </returns> + /// <returns>A detached entity instance</returns> object Get(string entityName, object id, LockMode lockMode); /// <summary> - /// Retrieve a entity, obtaining the specified lock mode. + /// Retrieve an entity, obtaining the specified lock mode. /// </summary> - /// <returns> a detached entity instance </returns> + /// <returns>A detached entity instance</returns> T Get<T>(object id, LockMode lockMode); /// <summary> /// Refresh the entity instance state from the database. /// </summary> - /// <param name="entity">The entity to be refreshed. </param> + /// <param name="entity">The entity to be refreshed.</param> void Refresh(object entity); /// <summary> /// Refresh the entity instance state from the database. /// </summary> - /// <param name="entityName">The entityName for the entity to be refreshed. </param> + /// <param name="entityName">The name of the entity to be refreshed.</param> /// <param name="entity">The entity to be refreshed.</param> void Refresh(string entityName, object entity); /// <summary> /// Refresh the entity instance state from the database. /// </summary> - /// <param name="entity">The entity to be refreshed. </param> + /// <param name="entity">The entity to be refreshed.</param> /// <param name="lockMode">The LockMode to be applied.</param> void Refresh(object entity, LockMode lockMode); /// <summary> /// Refresh the entity instance state from the database. /// </summary> - /// <param name="entityName">The entityName for the entity to be refreshed. </param> - /// <param name="entity">The entity to be refreshed. </param> - /// <param name="lockMode">The LockMode to be applied. </param> + /// <param name="entityName">The name of the entity to be refreshed.</param> + /// <param name="entity">The entity to be refreshed.</param> + /// <param name="lockMode">The LockMode to be applied.</param> void Refresh(string entityName, object entity, LockMode lockMode); /// <summary> @@ -128,7 +148,7 @@ IQuery CreateQuery(string queryString); /// <summary> - /// Obtain an instance of <see cref="IQuery"/> for a named query string defined in + /// Obtain an instance of <see cref="IQuery "/> for a named query string defined in /// the mapping file. /// </summary> /// <remarks> @@ -138,58 +158,58 @@ IQuery GetNamedQuery(string queryName); /// <summary> - /// Create a new <see cref="ICriteria"/> instance, for the given entity class, + /// Create a new <see cref="ICriteria "/> instance, for the given entity class, /// or a superclass of an entity class. /// </summary> /// <typeparam name="T">A class, which is persistent, or has persistent subclasses</typeparam> - /// <returns> The <see cref="ICriteria"/>. </returns> + /// <returns>The <see cref="ICriteria "/>.</returns> /// <remarks>Entities returned by the query are detached.</remarks> ICriteria CreateCriteria<T>() where T: class; /// <summary> - /// Create a new <see cref="ICriteria"/> instance, for the given entity class, + /// Create a new <see cref="ICriteria "/> instance, for the given entity class, /// or a superclass of an entity class, with the given alias. /// </summary> /// <typeparam name="T">A class, which is persistent, or has persistent subclasses</typeparam> /// <param name="alias">The alias of the entity</param> - /// <returns> The <see cref="ICriteria"/>. </returns> + /// <returns>The <see cref="ICriteria "/>.</returns> /// <remarks>Entities returned by the query are detached.</remarks> ICriteria CreateCriteria<T>(string alias) where T : class; /// <summary> - /// Create a new <see cref="ICriteria"/> instance, for the given entity class, + /// Create a new <see cref="ICriteria "/> instance, for the given entity class, /// or a superclass of an entity class. /// </summary> /// <param name="entityType">A class, which is persistent, or has persistent subclasses</param> - /// <returns> The <see cref="ICriteria"/>. </returns> + /// <returns>The <see cref="ICriteria "/>.</returns> /// <remarks>Entities returned by the query are detached.</remarks> ICriteria CreateCriteria(System.Type entityType); /// <summary> - /// Create a new <see cref="ICriteria"/> instance, for the given entity class, + /// Create a new <see cref="ICriteria "/> instance, for the given entity class, /// or a superclass of an entity class, with the given alias. /// </summary> /// <param name="entityType">A class, which is persistent, or has persistent subclasses</param> /// <param name="alias">The alias of the entity</param> - /// <returns> The <see cref="ICriteria"/>. </returns> + /// <returns>The <see cref="ICriteria "/>.</returns> /// <remarks>Entities returned by the query are detached.</remarks> ICriteria CreateCriteria(System.Type entityType, string alias); /// <summary> - /// Create a new <see cref="ICriteria"/> instance, for the given entity name. + /// Create a new <see cref="ICriteria "/> instance, for the given entity name. /// </summary> - /// <param name="entityName">The entity name. </param> - /// <returns> The <see cref="ICriteria"/>. </returns> + /// <param name="entityName">The entity name.</param> + /// <returns>The <see cref="ICriteria "/>.</returns> /// <remarks>Entities returned by the query are detached.</remarks> ICriteria CreateCriteria(string entityName); /// <summary> - /// Create a new <see cref="ICriteria"/> instance, for the given entity name, + /// Create a new <see cref="ICriteria "/> instance, for the given entity name, /// with the given alias. /// </summary> - /// <param name="entityName">The entity name. </param> + /// <param name="entityName">The entity name.</param> /// <param name="alias">The alias of the entity</param> - /// <returns> The <see cref="ICriteria"/>. </returns> + /// <returns>The <see cref="ICriteria "/>.</returns> /// <remarks>Entities returned by the query are detached.</remarks> ICriteria CreateCriteria(string entityName, string alias); @@ -208,11 +228,11 @@ IQueryOver<T,T> QueryOver<T>(Expression<Func<T>> alias) where T : class; /// <summary> - /// Create a new instance of <see cref="ISQLQuery"/> for the given SQL query string. + /// Create a new instance of <see cref="ISQLQuery "/> for the given SQL query string. /// Entities returned by the query are detached. /// </summary> - /// <param name="queryString">a SQL query </param> - /// <returns> The <see cref="ISQLQuery"/> </returns> + /// <param name="queryString">A SQL query</param> + /// <returns>The <see cref="ISQLQuery "/></returns> ISQLQuery CreateSQLQuery(string queryString); /// <summary> @@ -229,21 +249,10 @@ ITransaction BeginTransaction(IsolationLevel isolationLevel); /// <summary> - /// Returns the current ADO.NET connection associated with this instance. - /// </summary> - /// <remarks> - /// If the session is using aggressive connection release (as in a - /// CMT environment), it is the application's responsibility to - /// close the connection returned by this call. Otherwise, the - /// application should not close the connection. - /// </remarks> - IDbConnection Connection { get; } - - /// <summary> /// Sets the batch size of the session /// </summary> /// <param name="batchSize">The batch size.</param> - /// <returns>The same instance of the session for mthods chain.</returns> + /// <returns>The same instance of the session for methods chain.</returns> IStatelessSession SetBatchSize(int batchSize); } -} +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2011-02-26 10:38:13
|
Revision: 5400 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5400&view=rev Author: ricbrown Date: 2011-02-26 10:38:07 +0000 (Sat, 26 Feb 2011) Log Message: ----------- Fix NH-2543 (IQueryOver support is not implemented for IStatelessSession) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/IStatelessSession.cs trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs Modified: trunk/nhibernate/src/NHibernate/IStatelessSession.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2011-02-26 05:56:26 UTC (rev 5399) +++ trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2011-02-26 10:38:07 UTC (rev 5400) @@ -1,6 +1,6 @@ using System; using System.Data; - +using System.Linq.Expressions; using NHibernate.Engine; namespace NHibernate @@ -194,6 +194,20 @@ ICriteria CreateCriteria(string entityName, string alias); /// <summary> + /// Creates a new <c>IQueryOver<T></c> for the entity class. + /// </summary> + /// <typeparam name="T">The entity class</typeparam> + /// <returns>An ICriteria<T> object</returns> + IQueryOver<T,T> QueryOver<T>() where T : class; + + /// <summary> + /// Creates a new <c>IQueryOver<T></c> for the entity class. + /// </summary> + /// <typeparam name="T">The entity class</typeparam> + /// <returns>An ICriteria<T> object</returns> + IQueryOver<T,T> QueryOver<T>(Expression<Func<T>> alias) where T : class; + + /// <summary> /// Create a new instance of <see cref="ISQLQuery"/> for the given SQL query string. /// Entities returned by the query are detached. /// </summary> Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-26 05:56:26 UTC (rev 5399) +++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-26 10:38:07 UTC (rev 5400) @@ -2,10 +2,11 @@ using System.Collections; using System.Collections.Generic; using System.Data; - +using System.Linq.Expressions; using NHibernate.AdoNet; using NHibernate.Cache; using NHibernate.Collection; +using NHibernate.Criterion; using NHibernate.Engine; using NHibernate.Engine.Query; using NHibernate.Engine.Query.Sql; @@ -915,6 +916,25 @@ } } + public IQueryOver<T,T> QueryOver<T>() where T : class + { + using (new SessionIdLoggingContext(SessionId)) + { + CheckAndUpdateSessionStatus(); + return new QueryOver<T,T>(new CriteriaImpl(typeof(T), this)); + } + } + + public IQueryOver<T,T> QueryOver<T>(Expression<Func<T>> alias) where T : class + { + using (new SessionIdLoggingContext(SessionId)) + { + CheckAndUpdateSessionStatus(); + string aliasPath = ExpressionProcessor.FindMemberExpression(alias.Body); + return new QueryOver<T,T>(new CriteriaImpl(typeof(T), aliasPath, this)); + } + } + /// <summary> /// Begin a NHibernate transaction /// </summary> Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2011-02-26 05:56:26 UTC (rev 5399) +++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2011-02-26 10:38:07 UTC (rev 5400) @@ -552,6 +552,34 @@ } } + [Test] + public void StatelessSession() + { + using (var ss = sessions.OpenStatelessSession()) + { + using (var tx = ss.BeginTransaction()) + { + var person = new Person() { Name = "test1" }; + ss.Insert(person); + + var statelessPerson1 = + ss.QueryOver<Person>() + .List() + [0]; + + Assert.That(statelessPerson1.Id, Is.EqualTo(person.Id)); + + var statelessPerson2 = + QueryOver.Of<Person>() + .GetExecutableQueryOver(ss) + .List() + [0]; + + Assert.That(statelessPerson2.Id, Is.EqualTo(person.Id)); + } + } + } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-26 05:56:33
|
Revision: 5399 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5399&view=rev Author: julian-maughan Date: 2011-02-26 05:56:26 +0000 (Sat, 26 Feb 2011) Log Message: ----------- Fixed SessionException ("Session was already closed!") that occurs when disposing a stateless session that has been closed (ref. NH-2549). Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-25 09:49:31 UTC (rev 5398) +++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-26 05:56:26 UTC (rev 5399) @@ -438,7 +438,7 @@ { get { return false; } } - + public override object GetEntityUsingInterceptor(EntityKey key) { CheckAndUpdateSessionStatus(); @@ -472,7 +472,7 @@ { if (entity.IsProxy()) { - INHibernateProxy proxy = entity as INHibernateProxy; + INHibernateProxy proxy = entity as INHibernateProxy; entity = proxy.HibernateLazyInitializer.GetImplementation(); } return GuessEntityName(entity); @@ -551,7 +551,7 @@ /// Implementors of the <seealso cref="IStatelessSession"/> interface should return the NHibernate implementation of this method. /// </remarks> /// <returns> - /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface + /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface /// </returns> public ISessionImplementor GetSessionImplementation() { @@ -981,7 +981,7 @@ // free managed resources that are being managed by the session if we // know this call came through Dispose() - if (isDisposing) + if (isDisposing && !IsClosed) { Close(); } Modified: trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2011-02-25 09:49:31 UTC (rev 5398) +++ trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2011-02-26 05:56:26 UTC (rev 5399) @@ -211,5 +211,20 @@ criteria.Executing(c => c.List()).NotThrows(); } } + + [Test] + public void DisposingClosedStatelessSessionShouldNotCauseSessionException() + { + try + { + IStatelessSession ss = sessions.OpenStatelessSession(); + ss.Close(); + ss.Dispose(); + } + catch (SessionException) + { + Assert.Fail(); + } + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-25 09:49:38
|
Revision: 5398 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5398&view=rev Author: julian-maughan Date: 2011-02-25 09:49:31 +0000 (Fri, 25 Feb 2011) Log Message: ----------- Reversed an inadvertent change that occurred in the merging of the ReadOnlyEntities branch (r5397). Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/App.config Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2011-02-24 17:11:05 UTC (rev 5397) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2011-02-25 09:49:31 UTC (rev 5398) @@ -23,13 +23,6 @@ fullName="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblyBinding> - <!-- The assembly binding for FirebirdClient ADO.NET 2.0 DataProvider --> - <!-- --> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <qualifyAssembly partialName="FirebirdSql.Data.FirebirdClient" fullName="FirebirdSql.Data.FirebirdClient, Version=2.1.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" /> - </assemblyBinding> - <!-- --> - </runtime> <!-- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-24 17:11:15
|
Revision: 5397 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5397&view=rev Author: julian-maughan Date: 2011-02-24 17:11:05 +0000 (Thu, 24 Feb 2011) Log Message: ----------- Merged ReadOnlyEntities feature branch (r5306-5376, r5377-5396) into trunk. Modified Paths: -------------- trunk/nhibernate/doc/reference/master.xml trunk/nhibernate/src/NHibernate/Engine/EntityEntry.cs trunk/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs trunk/nhibernate/src/NHibernate/Engine/ISessionImplementor.cs trunk/nhibernate/src/NHibernate/Engine/QueryParameters.cs trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs trunk/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultFlushEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs trunk/nhibernate/src/NHibernate/Hql/Classic/QueryTranslator.cs trunk/nhibernate/src/NHibernate/Hql/IQueryTranslator.cs trunk/nhibernate/src/NHibernate/ICriteria.cs trunk/nhibernate/src/NHibernate/IQuery.cs trunk/nhibernate/src/NHibernate/ISession.cs trunk/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs trunk/nhibernate/src/NHibernate/Impl/CriteriaImpl.cs trunk/nhibernate/src/NHibernate/Impl/EnumerableImpl.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs trunk/nhibernate/src/NHibernate/Loader/Loader.cs trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs trunk/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs trunk/nhibernate/src/NHibernate/Proxy/ILazyInitializer.cs trunk/nhibernate/src/NHibernate.Test/App.config trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/doc/reference/modules/readonly.xml trunk/nhibernate/src/NHibernate.Test/Immutable/ trunk/nhibernate/src/NHibernate.Test/Immutable/Contract.cs trunk/nhibernate/src/NHibernate.Test/Immutable/ContractVariation.cs trunk/nhibernate/src/NHibernate.Test/Immutable/ContractVariation.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/ trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/AbstractEntityWithManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/AbstractEntityWithOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Contract.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/ContractVariation.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Info.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariation.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationVersioned.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationVersionedOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyFailureExpectedTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyJoinFailureExpectedTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariation.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationUnidir.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationVersioned.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationVersionedOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseManyToManyUnidirTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyUnidirTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Owner.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Party.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Plan.cs trunk/nhibernate/src/NHibernate.Test/Immutable/ImmutableTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/Info.cs trunk/nhibernate/src/NHibernate.Test/Immutable/Party.cs trunk/nhibernate/src/NHibernate.Test/Immutable/Plan.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ trunk/nhibernate/src/NHibernate.Test/ReadOnly/AbstractReadOnlyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Container.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Course.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/DataPoint.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/DataPoint.hbm.xml trunk/nhibernate/src/NHibernate.Test/ReadOnly/Enrolment.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Enrolment.hbm.xml trunk/nhibernate/src/NHibernate.Test/ReadOnly/Info.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Owner.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyCriteriaQueryTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyProxyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlySessionLazyNonLazyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlySessionTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyVersionedNodes.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Student.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/StudentDto.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/TextHolder.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/TextHolder.hbm.xml trunk/nhibernate/src/NHibernate.Test/ReadOnly/VersionedNode.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/VersionedNode.hbm.xml Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Test/Immutable/Contract.cs trunk/nhibernate/src/NHibernate.Test/Immutable/ContractVariation.cs trunk/nhibernate/src/NHibernate.Test/Immutable/ContractVariation.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/ trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/AbstractEntityWithManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/AbstractEntityWithOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Contract.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/ContractVariation.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Info.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariation.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationVersioned.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationVersionedOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyFailureExpectedTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyJoinFailureExpectedTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariation.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationUnidir.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationVersioned.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationVersionedOneToManyJoin.hbm.xml trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseManyToManyUnidirTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyUnidirTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseManyToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseOneToManyJoinTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Owner.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Party.cs trunk/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Plan.cs trunk/nhibernate/src/NHibernate.Test/Immutable/ImmutableTest.cs trunk/nhibernate/src/NHibernate.Test/Immutable/Info.cs trunk/nhibernate/src/NHibernate.Test/Immutable/Party.cs trunk/nhibernate/src/NHibernate.Test/Immutable/Plan.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/AbstractReadOnlyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Container.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Course.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/DataPoint.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/DataPoint.hbm.xml trunk/nhibernate/src/NHibernate.Test/ReadOnly/Enrolment.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Enrolment.hbm.xml trunk/nhibernate/src/NHibernate.Test/ReadOnly/Info.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Owner.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyCriteriaQueryTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyProxyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlySessionLazyNonLazyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlySessionTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyTest.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyVersionedNodes.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/Student.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/StudentDto.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/TextHolder.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/TextHolder.hbm.xml trunk/nhibernate/src/NHibernate.Test/ReadOnly/VersionedNode.cs trunk/nhibernate/src/NHibernate.Test/ReadOnly/VersionedNode.hbm.xml Modified: trunk/nhibernate/doc/reference/master.xml =================================================================== --- trunk/nhibernate/doc/reference/master.xml 2011-02-24 14:37:45 UTC (rev 5396) +++ trunk/nhibernate/doc/reference/master.xml 2011-02-24 17:11:05 UTC (rev 5397) @@ -13,13 +13,14 @@ <!ENTITY manipulating-data SYSTEM "modules/manipulating_data.xml"> <!ENTITY transactions SYSTEM "modules/transactions.xml"> <!ENTITY events SYSTEM "modules/events.xml"> -<!ENTITY batch SYSTEM "modules/batch.xml"> +<!ENTITY batch SYSTEM "modules/batch.xml"> <!ENTITY query-hql SYSTEM "modules/query_hql.xml"> <!ENTITY query-criteria SYSTEM "modules/query_criteria.xml"> <!ENTITY query-queryover SYSTEM "modules/query_queryover.xml"> <!ENTITY query-sql SYSTEM "modules/query_sql.xml"> <!ENTITY filters SYSTEM "modules/filters.xml"> <!ENTITY performance SYSTEM "modules/performance.xml"> +<!ENTITY read-only SYSTEM "modules/readonly.xml"> <!ENTITY toolset-guide SYSTEM "modules/toolset_guide.xml"> <!ENTITY example-parentchild SYSTEM "modules/example_parentchild.xml"> <!ENTITY example-weblog SYSTEM "modules/example_weblog.xml"> @@ -38,7 +39,7 @@ <bookinfo> <title>NHibernate - Relational Persistence for Idiomatic .NET</title> <subtitle>NHibernate Reference Documentation</subtitle> - <releaseinfo>3.0.0</releaseinfo> + <releaseinfo>3.0.1</releaseinfo> </bookinfo> <toc /> @@ -59,6 +60,7 @@ &inheritance-mapping; &manipulating-data; + &read-only; &transactions; &events; &batch; Copied: trunk/nhibernate/doc/reference/modules/readonly.xml (from rev 5396, branches/ReadOnlyEntities/nhibernate/doc/reference/modules/readonly.xml) =================================================================== --- trunk/nhibernate/doc/reference/modules/readonly.xml (rev 0) +++ trunk/nhibernate/doc/reference/modules/readonly.xml 2011-02-24 17:11:05 UTC (rev 5397) @@ -0,0 +1,823 @@ +<chapter id="readonly"> + <title>Read-only entities</title> + + <important> + <para> + NHibernate's treatment of <emphasis>read-only</emphasis> entities may + differ from what you may have encountered elsewhere. Incorrect usage + may cause unexpected results. + </para> + </important> + + <para> + When an entity is read-only: + + <itemizedlist> + <listitem> + <para> + NHibernate does not dirty-check the entity's simple + properties or single-ended associations; + </para> + </listitem> + <listitem> + <para> + NHibernate will not update simple properties or updatable + single-ended associations; + </para> + </listitem> + <listitem> + <para> + NHibernate will not update the version of the read-only + entity if only simple properties or single-ended + updatable associations are changed; + </para> + </listitem> + </itemizedlist> + </para> + + <para> + In some ways, NHibernate treats read-only entities the same as entities that are + not read-only: + + <itemizedlist> + <listitem> + <para> + NHibernate cascades operations to associations as + defined in the entity mapping. + </para> + </listitem> + <listitem> + <para> + NHibernate updates the version if the entity has a + collection with changes that dirties the entity; + </para> + </listitem> + <listitem> + <para> + A read-only entity can be deleted. + </para> + </listitem> + </itemizedlist> + </para> + + <para> + Even if an entity is not read-only, its collection association can + be affected if it contains a read-only entity. + </para> + + <para> + For details about the affect of read-only entities on different + property and association types, see + <xref linkend="readonly-proptypes"/>. + </para> + + <para> + For details about how to make entities read-only, see + <xref linkend="readonly-api"/> + </para> + + <para> + NHibernate does some optimizing for read-only entities: + </para> + <itemizedlist> + <listitem> + <para> + It saves execution time by not dirty-checking simple properties or + single-ended associations. + </para> + </listitem> + <listitem> + <para> + It saves memory by deleting database snapshots. + </para> + </listitem> + </itemizedlist> + + <section id="readonly-api"> + <title>Making persistent entities read-only</title> + + <para> + Only persistent entities can be made read-only. Transient and + detached entities must be put in persistent state before they + can be made read-only. + </para> + + <para> + NHibernate provides the following ways to make persistent entities read-only: + </para> + + <itemizedlist> + <listitem> + <para> + you can map an entity class as <emphasis>immutable</emphasis>; + when an entity of an immutable class is made persistent, + NHibernate automatically makes it read-only. + see <xref linkend="readonly-api-immutable"/> for details + </para> + </listitem> + <listitem> + <para> + you can change a default so that entities loaded + into the session by NHibernate are automatically + made read-only; see <xref linkend="readonly-api-loaddefault"/> for details + </para> + </listitem> + <listitem> + <para> + you can make an HQL query or criteria read-only so + that entities loaded when the query or criteria executes, + or iterates, are automatically + made read-only; see <xref linkend="readonly-api-querycriteria"/> for details + </para> + </listitem> + <listitem> + <para> + you can make a persistent entity that is already in the + in the session read-only; see + <xref linkend="readonly-api-entity"/> for details + </para> + </listitem> + </itemizedlist> + + <section id="readonly-api-immutable"> + <title>Entities of immutable classes</title> + + <para> + When an entity instance of an immutable class is made + persistent, NHibernate automatically makes it read-only. + </para> + <para> + An entity of an immutable class can created + and deleted the same as an entity of a mutable class. + </para> + + <para> + NHibernate treats a persistent entity of an immutable + class the same way as a read-only persistent entity + of a mutable class. The only exception is that + NHibernate will not allow an entity of an immutable + class to be changed so it is not read-only. + </para> + + </section> + + <section id="readonly-api-loaddefault"> + <title>Loading persistent entities as read-only</title> + + <note> + <para> + Entities of immutable classes are automatically loaded + as read-only. + </para> + </note> + + <para> + To change the default behavior so NHibernate loads entity + instances of mutable classes into the session and automatically + makes them read-only, call: + </para> + <programlisting role="c#">Session.DefaultReadOnly = true;</programlisting> + + <para> + To change the default back so entities loaded by NHibernate are not + made read-only, call: + </para> + <programlisting role="c#">Session.DefaultReadOnly = false;</programlisting> + + <para> + You can determine the current setting by using the property: + </para> + <programlisting role="c#">Session.DefaultReadOnly;</programlisting> + + <para> + If Session.DefaultReadOnly property returns true, entities loaded by + the following are automatically made read-only: + </para> + <itemizedlist> + <listitem> + <para> + Session.Load() and Session.Load<T> + </para> + </listitem> + <listitem> + <para> + Session.Get() and Session.Get<T> + </para> + </listitem> + <listitem> + <para> + Session.Merge() + </para> + </listitem> + <listitem> + <para> + executing, or iterating HQL queries and + criteria; to override this setting for a particular + HQL query or criteria see + <xref linkend="readonly-api-querycriteria"/> + </para> + </listitem> + </itemizedlist> + + <para> + Changing this default has no effect on: + </para> + <itemizedlist> + <listitem> + <para> + persistent entities already in the session when the + default was changed + </para> + </listitem> + <listitem> + <para> + persistent entities that are refreshed via + Session.Refresh(); a refreshed persistent + entity will only be read-only if it was + read-only before refreshing + </para> + </listitem> + <listitem> + <para> + persistent entities added by the application via + Session.Persist(), Session.Save(), and Session.Update() + Session.SaveOrUpdate() + </para> + </listitem> + </itemizedlist> + + </section> + + <section id="readonly-api-querycriteria"> + <title>Loading read-only entities from an HQL query/criteria</title> + + <note> + <para> + Entities of immutable classes are automatically loaded + as read-only. + </para> + </note> + + <para> + If Session.DefaultReadOnly returns false (the default) + when an HQL query or criteria executes, then entities + and proxies of mutable classes loaded by the query will + not be read-only. + </para> + + <para> + You can override this behavior so that entities and proxies loaded + by an HQL query or criteria are automatically made read-only. + </para> + + <para> + For an HQL query, call: + </para> + <programlisting role="c#">Query.SetReadOnly(true);</programlisting> + + <para> + <literal>Query.SetReadOnly(true)</literal> must be called before + <literal>Query.List()</literal>, <literal>Query.UniqueResult()</literal>, or <literal>Query.Iterate()</literal> + </para> + + <para> + For an HQL criteria, call: + </para> + <programlisting role="c#">Criteria.SetReadOnly(true);</programlisting> + + <para> + <literal>Criteria.SetReadOnly(true)</literal> must be called before + <literal>Criteria.List()</literal>, or <literal>Criteria.UniqueResult()</literal> + </para> + + <para> + Entities and proxies that exist in the session before being returned + by an HQL query or criteria are not affected. + </para> + + <para> + Uninitialized persistent collections returned by the query are + not affected. Later, when the collection is initialized, + entities loaded into the session will be read-only if + Session.DefaultReadOnly returns true. + </para> + + <para> + Using <literal>Query.SetReadOnly(true)</literal> or + <literal>Criteria.SetReadOnly(true)</literal> works well + when a single HQL query or criteria loads all the entities and + intializes all the proxies and collections that the application + needs to be read-only. + </para> + + <para> + When it is not possible to load and initialize all + necessary entities in a single query or criteria, + you can temporarily change the session default to load + entities as read-only before the query is executed. + Then you can explicitly initialize proxies and collections + before restoring the session default. + </para> + + <programlisting role="c#"> +ISession session = factory.OpenSession(); +ITransaction tx = session.BeginTransaction(); + +session.DefaultReadOnly = true; +Contract contract = session.CreateQuery("from Contract where CustomerName = 'Sherman'").UniqueResult<Contract>(); +NHibernate.Initialize(contract.Plan); +NHibernate.Initialize(contract.Variations); +NHibernate.Initialize(contract.Notes); +session.DefaultReadOnly = false; +... +tx.Commit(); +session.Close(); + +</programlisting> + + <para> + If Session.DefaultReadOnly returns true, then you can + use Query.SetReadOnly(false) and Criteria.SetReadOnly(false) + to override this session setting and load entities that are + not read-only. + </para> + + </section> + + <section id="readonly-api-entity"> + <title>Making a persistent entity read-only</title> + <note> + <para> + Persistent entities of immutable classes are automatically + made read-only. + </para> + </note> + + <para> + To make a persistent entity or proxy read-only, call: + </para> + <programlisting>Session.SetReadOnly(entityOrProxy, true)</programlisting> + + <para> + To change a read-only entity or proxy of a mutable class so + it is no longer read-only, call: + </para> + <programlisting>Session.SetReadOnly(entityOrProxy, false)</programlisting> + + <important> + <para> + When a read-only entity or proxy is changed so it is no longer + read-only, NHibernate assumes that the current state of the + read-only entity is consistent with its database representation. + If this is not true, then any non-flushed changes made before + or while the entity was read-only, will be ignored. + </para> + </important> + + <para> + To throw away non-flushed changes and make the persistent entity + consistent with its database representation, call: + </para> + <programlisting role="c#">Session.Refresh(entity);</programlisting> + + <para> + To flush changes made before or while the entity + was read-only and make the database representation + consistent with the current state of the persistent + entity: + </para> +<programlisting role="c#"> +// evict the read-only entity so it is detached +session.Evict(entity); + +// make the detached entity (with the non-flushed changes) persistent +session.Update(entity); + +// now entity is no longer read-only and its changes can be flushed +s.Flush(); +</programlisting> + </section> + </section> + + <section id="readonly-proptypes"> + <title>Read-only affect on property type</title> + + <para> + The following table summarizes how different property types are + affected by making an entity read-only. + </para> + + <table frame="topbot" id="readonly-proptype-summary"> + <title>Affect of read-only entity on property types</title> + <tgroup cols="2"> + <colspec colwidth="1*"/> + <colspec colwidth="1*"/> + <thead> + <row> + <entry>Property/Association Type</entry> + <entry>Changes flushed to DB?</entry> + </row> + </thead> + <tbody> + <row> + <entry> + Simple + <para> + (<xref linkend="readonly-proptypes-simple"/>) + </para> + </entry> + <entry>no*</entry> + </row> + <row> + <entry> + <para>Unidirectional one-to-one</para> + <para>Unidirectional many-to-one</para> + <para> + (<xref linkend="readonly-proptypes-singleended-unidir"/>) + </para> + </entry> + + <entry> + <para>no*</para> + <para>no*</para> + </entry> + </row> + <row> + <entry> + <para>Unidirectional one-to-many</para> + <para>Unidirectional many-to-many</para> + <para> + (<xref linkend="readonly-proptypes-manyended-unidir"/>) + </para> + </entry> + <entry> + <para>yes</para> + <para>yes</para> + </entry> + </row> + <row> + <entry> + <para>Bidirectional one-to-one</para> + <para> + (<xref linkend="readonly-proptypes-onetoone-bidir"/>) + </para> + </entry> + <entry>only if the owning entity is not read-only*</entry> + </row> + <row> + <entry> + <para>Bidirectional one-to-many/many-to-one</para> + <para>inverse collection</para> + <para>non-inverse collection</para> + <para> + (<xref linkend="readonly-proptypes-onetomany-manytoone"/>) + </para> + </entry> + <entry> + <para> </para> + <para>only added/removed entities that are not read-only*</para> + <para>yes</para> + </entry> + </row> + <row> + <entry> + <para>Bidirectional many-to-many</para> + <para> + (<xref linkend="readonly-proptypes-manytomany-bidir"/>) + </para> + </entry> + <entry>yes</entry> + </row> + </tbody> + </tgroup> + </table> + + <para> + * Behavior is different when the entity having the property/association + is read-only, compared to when it is not read-only. + </para> + + <section id="readonly-proptypes-simple"> + <title>Simple properties</title> + + <para> + When a persistent object is read-only, NHibernate does not + dirty-check simple properties. + </para> + + <para> + NHibernate will not synchronize simple property state changes + to the database. If you have automatic versioning, NHibernate + will not increment the version if any simple properties change. + </para> + + <programlisting role="c#"> +ISession session = factory.OpenSession(); +ITransaction tx = session.BeginTransaction(); + +// get a contract and make it read-only +Contract contract = session.Get<Contract>(contractId); +session.SetReadOnly(contract, true); + +// contract.CustomerName is "Sherman" +contract.CustomerName = "Yogi"; +tx.Commit(); + +tx = session.BeginTransaction(); + +contract = session.Get<Contract>(contractId); +// contract.CustomerName is still "Sherman" +... +tx.Commit(); +session.Close(); + </programlisting> + + </section> + + <section id="readonly-prop-types-unidir"> + <title>Unidirectional associations</title> + + <section id="readonly-proptypes-singleended-unidir"> + <title>Unidirectional one-to-one and many-to-one</title> + + <para> + NHibernate treats unidirectional one-to-one and many-to-one + associations in the same way when the owning entity is + read-only. + </para> + + <para> + We use the term <emphasis>unidirectional single-ended + association</emphasis> when referring to functionality + that is common to unidirectional one-to-one and many-to-one + associations. + </para> + + <para> + NHibernate does not dirty-check unidirectional single-ended + associations when the owning entity is read-only. + </para> + + <para> + If you change a read-only entity's reference to a + unidirectional single-ended association to null, + or to refer to a different entity, that change + will not be flushed to the database. + </para> + + <note> + <para> + If an entity is of an immutable class, + then its references to unidirectional single-ended + associations must be assigned when that + entity is first created. Because the entity is + automatically made read-only, these references can + not be updated. + </para> + </note> + + <para> + If automatic versioning is used, NHibernate will not + increment the version due to local changes to + unidirectional single-ended associations. + </para> + + <para> + In the following examples, Contract has a unidirectional + many-to-one association with Plan. Contract cascades save and + update operations to the association. + </para> + + <para> + The following shows that changing a read-only entity's + many-to-one association reference to null has no effect + on the entity's database representation. + </para> + +<programlisting role="c#">// get a contract with an existing plan; +// make the contract read-only and set its plan to null +tx = session.BeginTransaction(); +Contract contract = session.Get<Contract>(contractId); +session.SetReadOnly(contract, true); +contract.Plan = null; +tx.Commit(); + +// get the same contract +tx = session.BeginTransaction(); +Contract contract = session.Get<Contract>(contractId); + +// contract.Plan still refers to the original plan; + +tx.Commit(); +session.Close();</programlisting> + + <para> + The following shows that, even though + an update to a read-only entity's many-to-one + association has no affect on the entity's + database representation, flush still cascades + the save-update operation to the locally + changed association. + </para> + +<programlisting role="c#">// get a contract with an existing plan; +// make the contract read-only and change to a new plan +tx = session.BeginTransaction(); +Contract contract = session.Get<Contract>(contractId); +session.SetReadOnly(contract, true); +Plan newPlan = new Plan("new plan"); +contract.Plan = newPlan; +tx.Commit(); + +// get the same contract +tx = session.BeginTransaction(); +contract = session.Get<Contract>(contractId); +newPlan = session.Get<Plan>(newPlan.Id); + +// contract.Plan still refers to the original plan; +// newPlan is non-null because it was persisted when +// the previous transaction was committed; + +tx.Commit(); +session.Close();</programlisting> + + </section> + + <section id="readonly-proptypes-manyended-unidir"> + <title>Unidirectional one-to-many and many-to-many</title> + + <para> + NHibernate treats unidirectional one-to-many + and many-to-many associations owned by a read-only + entity the same as when owned by an entity that is not + read-only. + </para> + + <para> + NHibernate dirty-checks unidirectional one-to-many and + many-to-many associations; + </para> + + <para> + The collection can contain entities that + are read-only, as well as entities + that are not read-only. + </para> + + <para> + Entities can be added and removed from the + collection; changes are flushed to the database. + </para> + + <para> + If automatic versioning is used, NHibernate will + update the version due to changes in the collection + if they dirty the owning entity. + </para> + + </section> + + </section> + + <section id="readonly-proptypes-bidir"> + <title>Bidirectional associations</title> + + <section id="readonly-proptypes-onetoone-bidir"> + <title>Bidirectional one-to-one</title> + + <para> + If a read-only entity owns a bidirectional + one-to-one association: + </para> + + <itemizedlist> + <listitem> + <para> + NHibernate does not dirty-check the association. + </para> + </listitem> + <listitem> + <para> + updates that change the association reference + to null or to refer to a different entity + will not be flushed to the database. + </para> + </listitem> + <listitem> + <para> + If automatic versioning is used, NHibernate will not + increment the version due to local changes to + the association. + </para> + </listitem> + </itemizedlist> + + <note> + <para> + If an entity is of an immutable class, + and it owns a bidirectional one-to-one + association, then its reference must be + assigned when that entity is first created. + Because the entity is automatically made + read-only, these references cannot be updated. + </para> + </note> + + <para> + When the owner is not read-only, NHibernate treats + an association with a read-only entity the same + as when the association is with an entity that is + not read-only. + </para> + + </section> + + <section id="readonly-proptypes-onetomany-manytoone"> + <title>Bidirectional one-to-many/many-to-one</title> + + <para> + A read-only entity has no impact on a bidirectional + one-to-many/many-to-one association if: + </para> + + <itemizedlist> + <listitem> + <para> + the read-only entity is on the one-to-many side + using an inverse collection; + </para> + </listitem> + <listitem> + <para> + the read-only entity is on the one-to-many side + using a non-inverse collection; + </para> + </listitem> + <listitem> + <para> + the one-to-many side uses a non-inverse collection + that contains the read-only entity + </para> + </listitem> + </itemizedlist> + + <para> + When the one-to-many side uses an inverse collection: + </para> + + <itemizedlist> + <listitem> + <para> + a read-only entity can only be added to the collection + when it is created; + </para> + </listitem> + <listitem> + <para> + a read-only entity can only be removed from the + collection by an orphan delete or by explicitly + deleting the entity. + </para> + </listitem> + </itemizedlist> + + </section> + + <section id="readonly-proptypes-manytomany-bidir"> + <title>Bidirectional many-to-many</title> + <para> + NHibernate treats bidirectional many-to-many + associations owned by a read-only entity the + same as when owned by an entity that is not + read-only. + </para> + + <para> + NHibernate dirty-checks bidirectional many-to-many + associations. + </para> + + <para> + The collection on either side of the association + can contain entities that are read-only, as well + as entities that are not read-only. + </para> + + <para> + Entities are added and removed from both sides + of the collection; changes are flushed to the + database. + </para> + + <para> + If automatic versioning is used, NHibernate will + update the version due to changes in both sides of + the collection if they dirty the entity owning the + respective collections. + </para> + + </section> + + </section> + </section> +</chapter> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Engine/EntityEntry.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/EntityEntry.cs 2011-02-24 14:37:45 UTC (rev 5396) +++ trunk/nhibernate/src/NHibernate/Engine/EntityEntry.cs 2011-02-24 17:11:05 UTC (rev 5397) @@ -14,6 +14,7 @@ { private LockMode lockMode; private Status status; + private Status? previousStatus; private readonly object id; private object[] loadedState; private object[] deletedState; @@ -21,10 +22,11 @@ private object version; [NonSerialized] - private IEntityPersister persister;// for convenience to save some lookups + private IEntityPersister persister; // for convenience to save some lookups private readonly EntityMode entityMode; private readonly string entityName; + private EntityKey cachedEntityKey; private readonly bool isBeingReplicated; private readonly bool loadedWithLazyPropertiesUnfetched; @@ -50,9 +52,11 @@ bool disableVersionIncrement, bool lazyPropertiesAreUnfetched) { this.status = status; - this.loadedState = loadedState; + this.previousStatus = null; + // only retain loaded state if the status is not Status.ReadOnly + if (status != Status.ReadOnly) { this.loadedState = loadedState; } + this.id = id; this.rowId = rowId; - this.id = id; this.existsInDatabase = existsInDatabase; this.version = version; this.lockMode = lockMode; @@ -74,7 +78,7 @@ } /// <summary> - /// Gets or sets the <see cref="Status"/> of this Entity with respect to its + /// Gets or sets the <see cref="Status"/> of this Entity with respect to its /// persistence in the database. /// </summary> /// <value>The <see cref="Status"/> of this Entity.</value> @@ -86,7 +90,11 @@ if (value == Status.ReadOnly) loadedState = null; //memory optimization - status = value; + if (this.status != value) + { + previousStatus = this.status; + this.status = value; + } } } @@ -94,7 +102,7 @@ /// Gets or sets the identifier of the Entity in the database. /// </summary> /// <value>The identifier of the Entity in the database if one has been assigned.</value> - /// <remarks>This might be <see langword="null" /> when the <see cref="EntityEntry.Status"/> is + /// <remarks>This might be <see langword="null" /> when the <see cref="EntityEntry.Status"/> is /// <see cref="Engine.Status.Saving"/> and the database generates the id.</remarks> public object Id { @@ -129,7 +137,7 @@ /// </summary> /// <value><see langword="true" /> if it is already in the database.</value> /// <remarks> - /// It can also be <see langword="true" /> if it does not exists in the database yet and the + /// It can also be <see langword="true" /> if it does not exists in the database yet and the /// <see cref="IEntityPersister.IsIdentifierAssignedByInsert"/> is <see langword="true" />. /// </remarks> public bool ExistsInDatabase @@ -179,15 +187,33 @@ { get { return loadedWithLazyPropertiesUnfetched; } } + + /// <summary> + /// Get the EntityKey based on this EntityEntry. + /// </summary> + public EntityKey EntityKey + { + get + { + if (cachedEntityKey == null) + { + if (id == null) + throw new InvalidOperationException("cannot generate an EntityKey when id is null."); + cachedEntityKey = new EntityKey(id, persister, entityMode); + } + return cachedEntityKey; + } + } + public object GetLoadedValue(string propertyName) { int propertyIndex = ((IUniqueKeyLoadable) persister).GetPropertyIndex(propertyName); return loadedState[propertyIndex]; } - /// <summary> - /// After actually inserting a row, record the fact that the instance exists on the + /// <summary> + /// After actually inserting a row, record the fact that the instance exists on the /// database (needed for identity-column key generation) /// </summary> public void PostInsert() @@ -213,12 +239,13 @@ FieldInterceptionHelper.ClearDirty(entity); } - /// <summary> + /// <summary> /// After actually deleting a row, record the fact that the instance no longer /// exists in the database /// </summary> public void PostDelete() { + previousStatus = status; status = Status.Gone; existsInDatabase = false; } @@ -230,7 +257,7 @@ LockMode = LockMode.Force; persister.SetPropertyValue(entity, Persister.VersionProperty, nextVersion, entityMode); } - + public bool IsNullifiable(bool earlyInsert, ISessionImplementor session) { return Status == Status.Saving || (earlyInsert ? !ExistsInDatabase : session.PersistenceContext.NullifiableEntityKeys.Contains(new EntityKey(Id, Persister, entityMode))); @@ -238,21 +265,42 @@ public bool RequiresDirtyCheck(object entity) { - bool isMutableInstance = status != Status.ReadOnly && persister.IsMutable; - return - isMutableInstance - && - (Persister.HasMutableProperties || !FieldInterceptionHelper.IsInstrumented(entity) - || FieldInterceptionHelper.ExtractFieldInterceptor(entity).IsDirty); + IsModifiableEntity() + && (Persister.HasMutableProperties || !FieldInterceptionHelper.IsInstrumented(entity) + || FieldInterceptionHelper.ExtractFieldInterceptor(entity).IsDirty); } + + /// <summary> + /// Can the entity be modified? + /// The entity is modifiable if all of the following are true: + /// - the entity class is mutable + /// - the entity is not read-only + /// - if the current status is Status.Deleted, then the entity was not read-only when it was deleted + /// </summary> + /// <returns>true, if the entity is modifiable; false, otherwise</returns> + public bool IsModifiableEntity() + { + return (status != Status.ReadOnly) && !(status == Status.Deleted && previousStatus == Status.ReadOnly) && Persister.IsMutable; + } + + public bool IsReadOnly + { + get + { + if (status != Status.Loaded && status != Status.ReadOnly) + { + throw new HibernateException("instance was not in a valid state"); + } + return status == Status.ReadOnly; + } + } public void SetReadOnly(bool readOnly, object entity) { - if (status != Status.Loaded && status != Status.ReadOnly) - { - throw new HibernateException("instance was not in a valid state"); - } + if (readOnly == IsReadOnly) + return; // simply return since the status is not being changed + if (readOnly) { Status = Status.ReadOnly; @@ -260,6 +308,9 @@ } else { + if (!persister.IsMutable) + throw new InvalidOperationException("Cannot make an immutable entity modifiable."); + Status = Status.Loaded; loadedState = Persister.GetPropertyValues(entity, entityMode); } Modified: trunk/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs 2011-02-24 14:37:45 UTC (rev 5396) +++ trunk/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs 2011-02-24 17:11:05 UTC (rev 5397) @@ -9,25 +9,25 @@ namespace NHibernate.Engine { - /// <summary> - /// Holds the state of the persistence context, including the - /// first-level cache, entries, snapshots, proxies, etc. + /// <summary> + /// Holds the state of the persistence context, including the + /// first-level cache, entries, snapshots, proxies, etc. /// </summary> public interface IPersistenceContext { bool IsStateless { get;} - /// <summary> - /// Get the session to which this persistence context is bound. + /// <summary> + /// Get the session to which this persistence context is bound. /// </summary> ISessionImplementor Session { get;} - /// <summary> + /// <summary> /// Retrieve this persistence context's managed load context. /// </summary> LoadContexts LoadContexts { get;} - /// <summary> + /// <summary> /// Get the <tt>BatchFetchQueue</tt>, instantiating one if necessary. /// </summary> BatchFetchQueue BatchFetchQueue { get;} @@ -52,12 +52,30 @@ /// <summary>Is a flush cycle currently in process?</summary> /// <remarks>Called before and after the flushcycle</remarks> - bool Flushing { get;set;} + bool Flushing { get; set;} + + /// <summary> + /// The read-only status for entities (and proxies) loaded into this persistence context. + /// </summary> + /// <remarks> + /// <para> + /// When a proxy is initialized, the loaded entity will have the same read-only + /// setting as the uninitialized proxy has, regardless of the persistence context's + /// current setting. + /// </para> + /// <para> + /// To change the read-only setting for a particular entity or proxy that is already + /// in the current persistence context, use <see cref="IPersistenceContext.SetReadOnly(object, bool)" />. + /// </para> + /// </remarks> + /// <seealso cref="IPersistenceContext.IsReadOnly(object)" /> + /// <seealso cref="IPersistenceContext.SetReadOnly(object, bool)" /> + bool DefaultReadOnly { get; set; } /// <summary> Add a collection which has no owner loaded</summary> void AddUnownedCollection(CollectionKey key, IPersistentCollection collection); - /// <summary> + /// <summary> /// Get and remove a collection whose owner is not yet loaded, /// when its owner is being loaded /// </summary> @@ -75,13 +93,13 @@ /// <summary> Called after transactions end</summary> void AfterTransactionCompletion(); - /// <summary> + /// <summary> /// Get the current state of the entity as known to the underlying - /// database, or null if there is no corresponding row + /// database, or null if there is no corresponding row /// </summary> object[] GetDatabaseSnapshot(object id, IEntityPersister persister); - /// <summary> + /// <summary> /// Retrieve the cached database snapshot for the requested entity key. /// </summary> /// <param name="key">The entity key for which to retrieve the cached snapshot </param> @@ -95,9 +113,9 @@ /// </remarks> object[] GetCachedDatabaseSnapshot(EntityKey key); - /// <summary> - /// Get the values of the natural id fields as known to the underlying - /// database, or null if the entity has no natural id or there is no + /// <summary> + /// Get the values of the natural id fields as known to the underlying + /// database, or null if the entity has no natural id or there is no /// corresponding row. /// </summary> object[] GetNaturalIdSnapshot(object id, IEntityPersister persister); @@ -105,7 +123,7 @@ /// <summary> Add a canonical mapping from entity key to entity instance</summary> void AddEntity(EntityKey key, object entity); - /// <summary> + /// <summary> /// Get the entity instance associated with the given <tt>EntityKey</tt> /// </summary> object GetEntity(EntityKey key); @@ -113,7 +131,7 @@ /// <summary> Is there an entity with the given key in the persistence context</summary> bool ContainsEntity(EntityKey key); - /// <summary> + /// <summa... [truncated message content] |
From: <jul...@us...> - 2011-02-24 14:37:51
|
Revision: 5396 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5396&view=rev Author: julian-maughan Date: 2011-02-24 14:37:45 +0000 (Thu, 24 Feb 2011) Log Message: ----------- XML documentation refinements for read-only entity APIs. Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/ISessionImplementor.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/ICriteria.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/IQuery.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/ISession.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/CriteriaImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/SessionImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/ILazyInitializer.cs Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -55,38 +55,21 @@ bool Flushing { get; set;} /// <summary> - /// Change the default for entities and proxies loaded into this persistence - /// context from modifiable to read-only mode, or from modifiable to read-only - /// mode. + /// The read-only status for entities (and proxies) loaded into this persistence context. /// </summary> /// <remarks> /// <para> - /// Read-only entities are not dirty-checked and snapshots of persistent - /// state are not maintained. Read-only entities can be modified, but - /// changes are not persisted. + /// When a proxy is initialized, the loaded entity will have the same read-only + /// setting as the uninitialized proxy has, regardless of the persistence context's + /// current setting. /// </para> /// <para> - /// When a proxy is initialized, the loaded entity will have the same - /// read-only/modifiable setting as the uninitialized - /// proxy has, regardless of the persistence context's current setting. + /// To change the read-only setting for a particular entity or proxy that is already + /// in the current persistence context, use <see cref="IPersistenceContext.SetReadOnly(object, bool)" />. /// </para> - /// <para> - /// To change the read-only/modifiable setting for a particular entity - /// or proxy that is already in this session: - /// <see cref="SetReadOnly(object, bool)" /> - /// <see cref="ISession.SetReadOnly(object, bool)" /> - /// </para> - /// <para> - /// To determine the read-only/modifiable setting for a particular entity or proxy: - /// <see cref="IsReadOnly(object)" /> - /// <see cref="ISession.IsReadOnly(object)" /> - /// </para> - /// <para> - /// To override this session's read-only/modifiable setting for entities - /// and proxies loaded by an IQuery: - /// <see cref="IQuery.SetReadOnly(bool)" /> - /// </para> /// </remarks> + /// <seealso cref="IPersistenceContext.IsReadOnly(object)" /> + /// <seealso cref="IPersistenceContext.SetReadOnly(object, bool)" /> bool DefaultReadOnly { get; set; } /// <summary> Add a collection which has no owner loaded</summary> @@ -377,53 +360,36 @@ bool IsPropertyNull(EntityKey ownerKey, string propertyName); /// <summary> - /// Set the entity or proxy to read only and discard it's snapshot. - /// Set an unmodified persistent object to read-only mode, or a read-only - /// object to modifiable mode. + /// Change the read-only status of an entity (or proxy). /// </summary> /// <remarks> /// <para> - /// Read-only entities are not dirty-checked and snapshots of persistent - /// state are not maintained. Read-only entities can be modified, but - /// changes are not persisted. + /// Read-only entities can be modified, but changes are not persisted. They are not dirty-checked + /// and snapshots of persistent state are not maintained. /// </para> /// <para> - /// When a proxy is initialized, the loaded entity will have the same - /// read-only/modifiable setting as the uninitialized - /// proxy has, regardless of the session's current setting. + /// Immutable entities cannot be made read-only. /// </para> /// <para> - /// If the entity or proxy already has the specified read-only/modifiable - /// setting, then this method does nothing. + /// To set the <em>default</em> read-only setting for entities and proxies that are loaded + /// into the persistence context, see <see cref="IPersistenceContext.DefaultReadOnly" />. /// </para> - /// <para> - /// To set the default read-only/modifiable setting used for - /// entities and proxies that are loaded into this persistence context: - /// <see cref="IPersistenceContext.DefaultReadOnly" /> - /// <see cref="ISession.DefaultReadOnly" /> - /// </para> - /// <para> - /// To override this persistence context's read-only/modifiable setting - /// for entities and proxies loaded by a Query: - /// <see cref="IQuery.SetReadOnly(bool)" /> - /// </para> /// </remarks> - /// <param name="entity">An entity or INHibernateProxy</param> - /// <param name="readOnly">if <c>true</c>, the entity or proxy is made read-only; if <c>false</c>, the entity or proxy is made modifiable.</param> - /// <seealso cref="ISession.SetReadOnly(object, bool)" /> - void SetReadOnly(object entity, bool readOnly); + /// <param name="entityOrProxy">An entity (or <see cref="NHibernate.Proxy.INHibernateProxy" />).</param> + /// <param name="readOnly">If <c>true</c>, the entity or proxy is made read-only; if <c>false</c>, it is made modifiable.</param> + /// <seealso cref="IPersistenceContext.DefaultReadOnly" /> + /// <seealso cref="IPersistenceContext.IsReadOnly(object)" /> + void SetReadOnly(object entityOrProxy, bool readOnly); /// <summary> - /// Is the entity or proxy read-only? + /// Is the specified entity (or proxy) read-only? /// </summary> - /// <remarks> - /// To get the default read-only/modifiable setting used for - /// entities and proxies that are loaded into the session: - /// <see cref="ISession.DefaultReadOnly" /> - /// </remarks> + /// <param name="entityOrProxy">An entity (or <see cref="NHibernate.Proxy.INHibernateProxy" />)</param> /// <returns> - /// <c>true</c>, the object is read-only; <c>false</c>, the object is modifiable. + /// <c>true</c> if the entity or proxy is read-only, otherwise <c>false</c>. /// </returns> + /// <seealso cref="IPersistenceContext.DefaultReadOnly" /> + /// <seealso cref="IPersistenceContext.SetReadOnly(object, bool)" /> bool IsReadOnly(object entityOrProxy); void ReplaceDelayedEntityIdentityInsertKeys(EntityKey oldKey, object generatedId); Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/ISessionImplementor.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/ISessionImplementor.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/ISessionImplementor.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -16,7 +16,7 @@ namespace NHibernate.Engine { /// <summary> - /// Defines the internal contract between the <c>Session</c> and other parts of Hibernate + /// Defines the internal contract between the <c>Session</c> and other parts of NHibernate /// such as implementors of <c>Type</c> or <c>ClassPersister</c> /// </summary> public interface ISessionImplementor Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -168,14 +168,6 @@ set { _lockModes = value; } } - /// <summary> - /// Has the read-only/modifiable mode been explicitly set? - /// </summary> - /// <value> - /// <c>true</c>, the read-only/modifiable mode was explicitly set; <c>false</c>, the read-only/modifiable mode was not explicitly set - /// </value> - /// <seealso cref="ReadOnly" /> - /// <seealso cref="IsReadOnly(ISessionImplementor)" /> public bool IsReadOnlyInitialized { get { return _isReadOnlyInitialized; } @@ -281,15 +273,6 @@ public bool Callable { get; set; } - /// <summary> - /// Should entities and proxies loaded by the query be put in read-only mode? - /// </summary> - /// <remarks> - /// The read-only/modifiable setting has no impact on entities/proxies returned by the - /// query that existed in the session before the query was executed. - /// </remarks> - /// <seealso cref="IsReadOnlyInitialized" /> - /// <seealso cref="IsReadOnly(ISessionImplementor)" /> public bool ReadOnly { get @@ -693,23 +676,6 @@ return copy; } - /// <summary> - /// Should entities and proxies loaded by the query be put in read-only mode? If the - /// read-only/modifiable setting was not initialized - /// (i.e. <see cref="IsReadOnlyInitialized" /> == false), then the default - /// read-only/modifiable setting for the persistence context is returned instead. - /// </summary> - /// <remarks> - /// The read-only/modifiable setting has no impact on entities/proxies returned by the - /// query that existed in the session before the query was executed. - /// </remarks> - /// <seealso cref="IsReadOnlyInitialized" /> - /// <seealso cref="ReadOnly" /> - /// <seealso cref="IPersistenceContext.DefaultReadOnly" /> - /// <param name="session"></param> - /// <returns> - /// <c>true</c>, entities and proxies loaded by the query will be put in read-only mode; <c>false</c>, entities and proxies loaded by the query will be put in modifiable mode - /// </returns> public bool IsReadOnly(ISessionImplementor session) { return _isReadOnlyInitialized ? this.ReadOnly : session.PersistenceContext.DefaultReadOnly; Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -1113,6 +1113,7 @@ return nullAssociations.Contains(new AssociationKey(ownerKey, propertyName)); } + /// <inheritdoc /> public void SetReadOnly(object entityOrProxy, bool readOnly) { if (entityOrProxy == null) @@ -1164,6 +1165,7 @@ hasNonReadOnlyEntities |= !readOnly; } + /// <inheritdoc /> public bool IsReadOnly(object entityOrProxy) { if (entityOrProxy == null) Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/ICriteria.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/ICriteria.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/ICriteria.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -61,26 +61,32 @@ string Alias { get; } /// <summary> - /// Was the read-only/modifiable mode explicitly initialized? + /// Was the read-only mode explicitly initialized? /// </summary> - /// <seealso cref="SetReadOnly(bool)" /> - /// <returns><c>true</c>, the read-only/modifiable mode was explicitly initialized; <c>false</c>, otherwise.</returns> + /// <returns><c>true</c> if the read-only mode was explicitly initialized, otherwise <c>false</c>.</returns> + /// <seealso cref="ICriteria.SetReadOnly(bool)" /> + /// <seealso cref="ICriteria.IsReadOnly" />/// bool IsReadOnlyInitialized { get; } /// <summary> - /// Should entities and proxies loaded by this Criteria be put in read-only mode? If the - /// read-only/modifiable setting was not initialized, then the default - /// read-only/modifiable setting for the persistence context is returned instead. + /// Will entities (and proxies) loaded by this Criteria be put in read-only mode? /// </summary> /// <remarks> - /// The read-only/modifiable setting has no impact on entities/proxies returned by the + /// <para> + /// If the read-only setting was not initialized, then the value of the session's + /// <see cref="ISession.DefaultReadOnly" /> property is returned instead. + /// </para> + /// <para> + /// The read-only setting has no impact on entities or proxies returned by the /// Criteria that existed in the session before the Criteria was executed. + /// </para> /// </remarks> - /// <seealso cref="SetReadOnly(bool)" /> - /// <seealso cref="NHibernate.Engine.IPersistenceContext.DefaultReadOnly" /> /// <returns> - /// <c>true</c>, entities and proxies loaded by the criteria will be put in read-only mode; <c>false</c>, entities and proxies loaded by the criteria will be put in modifiable mode + /// <c>true</c> if entities and proxies loaded by the criteria will be put in read-only mode, + /// otherwise <c>false</c>. /// </returns> + /// <seealso cref="ICriteria.SetReadOnly(bool)" /> + /// <seealso cref="ICriteria.IsReadOnlyInitialized" /> bool IsReadOnly { get; } /// <summary> @@ -310,28 +316,33 @@ IFutureValue<T> FutureValue<T>(); /// <summary> - /// Set the read-only/modifiable mode for entities and proxies - /// loaded by this Criteria. This setting overrides the default setting - /// for the persistence context. + /// Set the read-only mode for entities (and proxies) loaded by this Criteria. This + /// setting overrides the default for the session (see <see cref="ISession.DefaultReadOnly" />). /// </summary> /// <remarks> - /// <para>Use <see cref="NHibernate.Engine.IPersistenceContext.DefaultReadOnly" /> or - /// <see cref="NHibernate.ISession.DefaultReadOnly" /> to set the default read-only/modifiable - /// setting used for entities and proxies that are loaded into the session.</para> - /// <para>Read-only entities are not dirty-checked and snapshots of persistent - /// state are not maintained. Read-only entities can be modified, but - /// changes are not persisted.</para> - /// <para>When a proxy is initialized, the loaded entity will have the same - /// read-only/modifiable setting as the uninitialized proxy has, regardless - /// of the session's current setting.</para> - /// <para>The read-only/modifiable setting has no impact on entities/proxies - /// returned by the criteria that existed in the session before the criteria was - /// executed.</para> + /// <para> + /// To set the <em>default</em> read-only setting for entities and proxies that are loaded + /// into the session, see <see cref="ISession.DefaultReadOnly" />. + /// </para> + /// <para> + /// Read-only entities can be modified, but changes are not persisted. They are not + /// dirty-checked and snapshots of persistent state are not maintained. + /// </para> + /// <para> + /// When a proxy is initialized, the loaded entity will have the same read-only setting + /// as the uninitialized proxy has, regardless of the session's current setting. + /// </para> + /// <para> + /// The read-only setting has no impact on entities or proxies returned by the criteria + /// that existed in the session before the criteria was executed. + /// </para> /// </remarks> /// <param name="readOnly"> - /// <c>true</c>, entities and proxies loaded by the criteria will be put in read-only mode; <c>false</c>, entities and proxies loaded by the criteria will be put in modifiable mode + /// If <c>true</c>, entities (and proxies) loaded by the criteria will be read-only. /// </param> /// <returns><c>this</c> (for method chaining)</returns> + /// <seealso cref="ICriteria.IsReadOnly" /> + /// <seealso cref="ICriteria.IsReadOnlyInitialized" /> ICriteria SetReadOnly(bool readOnly); #region NHibernate specific Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/IQuery.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/IQuery.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/IQuery.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -67,7 +67,7 @@ IType[] ReturnTypes { get; } /// <summary> Return the HQL select clause aliases (if any)</summary> - /// <returns> an array of aliases as strings </returns> + /// <returns> An array of aliases as strings </returns> string[] ReturnAliases { get; } /// <summary> @@ -77,19 +77,23 @@ string[] NamedParameters { get; } /// <summary> - /// Should entities and proxies loaded by this query be put in read-only mode? If the - /// read-only/modifiable setting was not initialized, then the default - /// read-only/modifiable setting for the persistence context is returned instead. + /// Will entities (and proxies) returned by the query be loaded in read-only mode? /// </summary> /// <remarks> - /// The read-only/modifiable setting has no impact on entities/proxies returned by the + /// <para> + /// If the query's read-only setting is not initialized (with <see cref="SetReadOnly(bool)" />), + /// the value of the session's <see cref="ISession.DefaultReadOnly" /> property is + /// returned instead. + /// </para> + /// <para> + /// The value of this property has no effect on entities or proxies returned by the /// query that existed in the session before the query was executed. + /// </para> /// </remarks> /// <returns> - /// <c>true</c>, entities and proxies loaded by the query will be put in read-only mode; <c>false</c>, entities and proxies loaded by the query will be put in modifiable mode + /// <c>true</c> if entities and proxies loaded by the query will be put in read-only mode, otherwise <c>false</c>. /// </returns> - /// <seealso cref="SetReadOnly(bool)" /> - /// <seealso cref="NHibernate.Engine.IPersistenceContext.DefaultReadOnly()" /> + /// <seealso cref="IQuery.SetReadOnly(bool)" /> bool IsReadOnly { get; } /// <summary> @@ -171,13 +175,28 @@ IQuery SetFirstResult(int firstResult); /// <summary> - /// Entities retrieved by this query will be loaded in - /// a read-only mode where NHibernate will never dirty-check - /// them or make changes persistent. + /// Set the read-only mode for entities (and proxies) loaded by this query. This setting + /// overrides the default setting for the session (see <see cref="ISession.DefaultReadOnly" />). /// </summary> + /// <remarks> + /// <para> + /// Read-only entities can be modified, but changes are not persisted. They are not + /// dirty-checked and snapshots of persistent state are not maintained. + /// </para> + /// <para> + /// When a proxy is initialized, the loaded entity will have the same read-only setting + /// as the uninitialized proxy, regardless of the session's current setting. + /// </para> + /// <para> + /// The read-only setting has no impact on entities or proxies returned by the criteria + /// that existed in the session before the criteria was executed. + /// </para> + /// </remarks> /// <param name="readOnly"> - /// <c>true</c>, entities and proxies loaded by the query will be put in read-only mode; <c>false</c>, entities and proxies loaded by the query will be put in modifiable mode + /// If <c>true</c>, entities (and proxies) loaded by the query will be read-only. /// </param> + /// <returns><c>this</c> (for method chaining)</returns> + /// <seealso cref="IsReadOnly" /> IQuery SetReadOnly(bool readOnly); /// <summary> Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/ISession.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/ISession.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/ISession.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -179,71 +179,66 @@ bool IsDirty(); /// <summary> - /// Is the specified entity or proxy read-only? + /// Is the specified entity (or proxy) read-only? /// </summary> /// <remarks> - /// To get the default read-only/modifiable setting used for - /// entities and proxies that are loaded into the session: - /// <see cref="DefaultReadOnly" /> + /// Facade for <see cref="IPersistenceContext.IsReadOnly(object)" />. /// </remarks> - /// <param name="entityOrProxy">An entity or INHibernateProxy</param> + /// <param name="entityOrProxy">An entity (or <see cref="NHibernate.Proxy.INHibernateProxy" />)</param> /// <returns> - /// <c>true</c>, the entity or proxy is read-only; <c>false</c>, the entity or proxy is modifiable. + /// <c>true</c> if the entity (or proxy) is read-only, otherwise <c>false</c>. /// </returns> + /// <seealso cref="ISession.DefaultReadOnly" /> + /// <seealso cref="ISession.SetReadOnly(object, bool)" /> bool IsReadOnly(object entityOrProxy); /// <summary> - /// Set an unmodified persistent object to read-only mode, or a read-only - /// object to modifiable mode. In read-only mode, no snapshot is maintained, - /// the instance is never dirty checked, and changes are not persisted. + /// Change the read-only status of an entity (or proxy). /// </summary> /// <remarks> /// <para> - /// If the entity or proxy already has the specified read-only/modifiable - /// setting, then this method does nothing. + /// Read-only entities can be modified, but changes are not persisted. They are not dirty-checked + /// and snapshots of persistent state are not maintained. /// </para> /// <para> - /// To set the default read-only/modifiable setting used for - /// entities and proxies that are loaded into the session: - /// <see cref="ISession.DefaultReadOnly" /> + /// Immutable entities cannot be made read-only. /// </para> /// <para> - /// To override this session's read-only/modifiable setting for entities - /// and proxies loaded by a query: - /// <see cref="IQuery.SetReadOnly(bool)" /> + /// To set the <em>default</em> read-only setting for entities and proxies that are loaded + /// into the session, see <see cref="ISession.DefaultReadOnly" />. /// </para> + /// <para> + /// This method a facade for <see cref="IPersistenceContext.SetReadOnly(object, bool)" />. + /// </para> /// </remarks> - /// <param name="entityOrProxy">An entity or INHibernateProxy</param> - /// <param name="readOnly">if <c>true</c>, the entity or proxy is made read-only; if <c>false</c>, the entity or proxy is made modifiable.</param> + /// <param name="entityOrProxy">An entity (or <see cref="NHibernate.Proxy.INHibernateProxy" />).</param> + /// <param name="readOnly">If <c>true</c>, the entity or proxy is made read-only; if <c>false</c>, it is made modifiable.</param> + /// <seealso cref="ISession.DefaultReadOnly" /> + /// <seealso cref="ISession.IsReadOnly(object)" /> void SetReadOnly(object entityOrProxy, bool readOnly); /// <summary> - /// The default read-only status of the Session - /// Will entities and proxies that are loaded into this session be made - /// read-only by default? + /// The read-only status for entities (and proxies) loaded into this Session. /// </summary> /// <remarks> /// <para> - /// Read-only entities are not dirty-checked and snapshots of persistent - /// state are not maintained. Read-only entities can be modified, but - /// changes are not persisted. + /// When a proxy is initialized, the loaded entity will have the same read-only setting + /// as the uninitialized proxy, regardless of the session's current setting. /// </para> /// <para> - /// When a proxy is initialized, the loaded entity will have the same - /// read-only/modifiable setting as the uninitialized - /// proxy has, regardless of the session's current setting. + /// To change the read-only setting for a particular entity or proxy that is already in + /// this session, see <see cref="ISession.SetReadOnly(object, bool)" />. /// </para> /// <para> - /// To change the read-only/modifiable setting for a particular entity - /// or proxy that is already in this session: - /// <see cref="ISession.SetReadOnly(object, bool)" /> + /// To override this session's read-only setting for entities and proxies loaded by a query, + /// see <see cref="IQuery.SetReadOnly(bool)" />. /// </para> /// <para> - /// To override this session's read-only/modifiable setting for entities - /// and proxies loaded by a query: - /// <see cref="IQuery.SetReadOnly(bool)" /> + /// This method is a facade for <see cref="IPersistenceContext.DefaultReadOnly" />. /// </para> /// </remarks> + /// <seealso cref="ISession.IsReadOnly(object)" /> + /// <seealso cref="ISession.SetReadOnly(object, bool)" /> bool DefaultReadOnly { get; set; } /// <summary> Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/CriteriaImpl.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/CriteriaImpl.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/CriteriaImpl.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -124,11 +124,13 @@ get { return projection; } } + /// <inheritdoc /> public bool IsReadOnlyInitialized { get { return (readOnly != null); } } + /// <inheritdoc /> public bool IsReadOnly { get @@ -496,7 +498,8 @@ return this; } - + + /// <inheritdoc /> public ICriteria SetReadOnly(bool readOnly) { this.readOnly = readOnly; @@ -795,12 +798,12 @@ return root.FutureValue<T>(); } - public IEnumerable<T> Future<T>() - { - return root.Future<T>(); - } + public IEnumerable<T> Future<T>() + { + return root.Future<T>(); + } - public void List(IList results) + public void List(IList results) { root.List(results); } Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/SessionImpl.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -2394,12 +2394,12 @@ } /// <inheritdoc /> - public void SetReadOnly(object entity, bool readOnly) + public void SetReadOnly(object entityOrProxy, bool readOnly) { using (new SessionIdLoggingContext(SessionId)) { CheckAndUpdateSessionStatus(); - persistenceContext.SetReadOnly(entity, readOnly); + persistenceContext.SetReadOnly(entityOrProxy, readOnly); } } Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -50,6 +50,7 @@ SetSession(session); } + /// <inheritdoc /> public void SetSession(ISessionImplementor s) { if (s != _session) @@ -84,6 +85,7 @@ } } + /// <inheritdoc /> public void UnsetSession() { _session = null; @@ -207,6 +209,7 @@ initialized = true; } + /// <inheritdoc /> public bool IsReadOnlySettingAvailable { get { return (_session != null && !_session.IsClosed); } Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/ILazyInitializer.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/ILazyInitializer.cs 2011-02-24 13:58:45 UTC (rev 5395) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/ILazyInitializer.cs 2011-02-24 14:37:45 UTC (rev 5396) @@ -40,7 +40,7 @@ ISessionImplementor Session { get; set; } /// <summary> - /// Is the proxy's read-only/modifiable setting available? + /// Is the read-only setting available? /// </summary> bool IsReadOnlySettingAvailable { get; } @@ -49,22 +49,15 @@ /// </summary> /// <remarks> /// <para> - /// The read-only/modifiable setting is not available when the proxy is - /// detached or its associated session is closed. + /// Not available when the proxy is detached or its associated session is closed. /// </para> /// <para> - /// If the proxy is currently initialized, its implementation will be set to - /// the same mode; otherwise, when the proxy is initialized, its implementation - /// will have the same read-only/modifiable setting as the proxy. In read-only - /// mode, no snapshot is maintained and the instance is never dirty checked. - /// </para> + /// To check if the read-only setting is available, use <see cref="IsReadOnlySettingAvailable" /> + /// </para> /// <para> - /// If the associated proxy already has the specified read-only/modifiable - /// setting, then this method does nothing. + /// The read-only status of the entity will be made to match the read-only status of the proxy + /// upon initialization. /// </para> - /// <para> - /// To check if the read-only/modifiable setting is available: <see cref="IsReadOnlySettingAvailable" /> - /// </para> /// </remarks> bool ReadOnly { get; set; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-24 13:58:54
|
Revision: 5395 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5395&view=rev Author: julian-maughan Date: 2011-02-24 13:58:45 +0000 (Thu, 24 Feb 2011) Log Message: ----------- Merged latest trunk (r5394) to ReadOnlyEntities branch. Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml branches/ReadOnlyEntities/nhibernate/default.build branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate/ICriteria.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/IQuery.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/ISession.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/NHibernate.build branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascadeTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/CompositeId/ClassWithCompositeIdFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/MapFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH645/HQLFunctionFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHibernate.Test.build branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Operations/MergeFixture.cs branches/ReadOnlyEntities/nhibernate/teamcity.build Added Paths: ----------- branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.doc branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.exe branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/firebird.msg branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/firebird.msg branches/ReadOnlyEntities/nhibernate/lib/teamcity/readme.txt Removed Paths: ------------- branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.doc branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.exe Property Changed: ---------------- branches/ReadOnlyEntities/ branches/ReadOnlyEntities/nhibernate/ branches/ReadOnlyEntities/nhibernate/src/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/ Property changes on: branches/ReadOnlyEntities ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x:4505-4508,4510-4513,4537-4538 /trunk:5306-5388 + /branches/2.1.x:4505-4508,4510-4513,4537-4538 /trunk:5306-5394 Property changes on: branches/ReadOnlyEntities/nhibernate ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate:5306-5388 + /branches/2.1.x/nhibernate:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate:5306-5394 Property changes on: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Deleted: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf =================================================================== --- trunk/nhibernate/Tools/ILMerge/ILMerge License.rtf 2011-02-24 10:05:36 UTC (rev 5394) +++ branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf 2011-02-24 13:58:45 UTC (rev 5395) @@ -1,104 +0,0 @@ -{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} -{\f39\froman\fcharset0\fprq2{\*\panose 02040602050305030304}Book Antiqua;}{\f40\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f41\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;} -{\f42\froman\fcharset238\fprq2 Times New Roman CE;}{\f43\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f45\froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\froman\fcharset162\fprq2 Times New Roman Tur;} -{\f47\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f49\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\f412\fswiss\fcharset238\fprq2 Tahoma CE;}{\f413\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f415\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f416\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f417\fswiss\fcharset177\fprq2 Tahoma (Hebrew);} -{\f418\fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f419\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f420\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f421\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f432\froman\fcharset238\fprq2 Book Antiqua CE;} -{\f433\froman\fcharset204\fprq2 Book Antiqua Cyr;}{\f435\froman\fcharset161\fprq2 Book Antiqua Greek;}{\f436\froman\fcharset162\fprq2 Book Antiqua Tur;}{\f439\froman\fcharset186\fprq2 Book Antiqua Baltic;} -{\f442\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f443\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f445\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;}{\f446\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;} -{\f449\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f452\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f453\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f455\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;} -{\f456\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f459\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255; -\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} -{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv -\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \fi-274\li274\ri0\sb120\sl460\slmult0 -\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin274\itap0 \f40\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 \styrsid9786739 1sectionhead;}{\s16\ql \li0\ri0\sb120\sl200\slmult0 -\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \caps\f40\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 \styrsid9786739 4laparahead;}{\s17\ql \li0\ri-18\sb120\sl240\slmult0 -\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-18\lin0\itap0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 \styrsid9786739 2lasubhead;}{\s18\ql \fi-187\li187\ri0\sb60\sl180\slmult0 -\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin187\itap0 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 \styrsid9786739 3cnumbered;}{\s19\ql \fi-340\li624\ri0\sb60\sl160\slmult0 -\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin624\itap0 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 \styrsid9786739 3inumbered2ndlevel;}{\s20\ql \li0\ri0\sb240\sl240\slmult0 -\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 \styrsid9786739 2afrenchsubhead;}{\s21\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 -\cbpat9 \f37\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 \ssemihidden \styrsid7154712 Document Map;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\pgptbl {\pgp\ipgp2\itap0\li0\ri0\sb0\sa0\brdrt\brdrs\brdrw20 }{\pgp\ipgp0 -\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid2099452\rsid4207571\rsid5465292\rsid5510097\rsid5510644\rsid7154712\rsid7241305\rsid7672529\rsid7735936\rsid9179139\rsid9786739\rsid10440675\rsid11303133\rsid13130884\rsid14028235\rsid14100361\rsid14113652 -\rsid15276140\rsid16213514}{\*\generator Microsoft Word 11.0.6359;}{\info{\title ILMerge EULA}{\author Ken Leppert}{\operator mbarnett}{\creatim\yr2005\mo3\dy16\hr15\min43}{\revtim\yr2005\mo3\dy16\hr15\min43}{\printim\yr2004\mo4\dy30\hr13\min9}{\version2} -{\edmins0}{\nofpages3}{\nofwords1188}{\nofchars6775}{\*\company Microsoft Corporation}{\nofcharsws7948}{\vern24703}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180 -\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1\jexpand\viewkind1\viewscale68\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel -\wrppunct\asianbrkrule\rsidroot9786739\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang -{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain -\s15\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid7154712 \f40\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\fs28\insrsid9786739 MICROSOFT }{ -\b\f39\fs28\insrsid5465292 ILMerge}{\insrsid9786739 -\par }{\b\f39\fs22\insrsid9786739 END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE}{\insrsid9786739 -\par }\pard\plain \s17\qj \li0\ri-17\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-17\lin0\itap0\pararsid14100361 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\insrsid9786739 IMPORTANT\emdash -READ CAREFULLY: }{\f39\insrsid9786739 This End-User License Agreement (\'93EULA\'94) is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation (\'93Microsoft\'94) for th -e Microsoft software that accompanies this EULA, which includes computer software and may include associated media, printed materials, \'93online\'94 or electronic documentation, and Internet-based services (\'93Software\'94).\~ - An amendment or addendum to this EULA may accompany the Software.\~ }{\b\f39\insrsid9786739 -YOU AGREE TO BE BOUND BY THE TERMS OF THIS EULA BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE SOFTWARE.}{\insrsid9786739 -\par }\pard\plain \qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1.\~\~\~\~\~\~\~\~ }{ -\b\f39\fs22\insrsid9786739 GRANTS OF LICENSE}{\f39\fs22\insrsid9786739 . Microsoft grants you the rights described in this EULA provided that you comply with all terms and conditions of this EULA.\~ }{\insrsid9786739 -\par }\pard\plain \s19\qj \fi720\li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 1.1\~\~\~\~\~\~ }{ -\b\i\f39\fs22\cf0\insrsid9786739 License Grant}{\f39\fs22\cf0\insrsid9786739 . Microsoft grants to you a personal, nonexclusive, nontransferable, limited license to }{\f39\fs22\insrsid9786739 install and use a reasonable number of copies of -the Software on computers residing on your premises }{\f39\fs22\cf0\insrsid9786739 for the purposes of designing, developing, and testing, your software product(s), provided that you are the only individual using the Software.\~ }{\insrsid9786739 -\par }\pard\plain \s18\qj \fi720\li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1.2\~\~\~\~\~\~ }{ -\b\i\f39\fs22\insrsid9786739 Documentation}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~ }{\f39\fs22\insrsid9786739 You may make and use a reasonabl -e number of copies of any documentation, provided that such copies shall be used only for your personal purposes and are not to be republished or distributed (either in hard copy or electronic form) beyond your premises.}{\insrsid9786739 -\par }\pard \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 {\f39\fs22\insrsid9786739 2.\~\~\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 RESERVATION OF RIGHTS AND OWNERSHIP.\~ }{ -\f39\fs22\insrsid9786739 The Software is licensed as a single product.\~ Its component parts may not be separated. Microsoft reserves all rights not expressly granted to you in this EULA.\~ - The Software is protected by copyright and other intellectual property laws and treaties}{\f39\fs22\insrsid14028235 , and}{\f39\fs22\insrsid9786739 Microsoft }{\f39\fs22\insrsid14028235 (}{\f39\fs22\insrsid9786739 or its suppliers}{ -\f39\fs22\insrsid14028235 , where applicable)}{\f39\fs22\insrsid9786739 own }{\f39\fs22\insrsid14028235 all right, }{\f39\fs22\insrsid9786739 title, }{\f39\fs22\insrsid14028235 and interest in all }{\f39\fs22\insrsid9786739 -intellectual property rights in the Software.\~ }{\b\f39\fs22\insrsid9786739 The Software is licensed, not sold.}{\insrsid9786739 -\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 3.\~\~\~\~\~\~\~\~ }{ -\b\f39\fs22\cf0\insrsid9786739 LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND DISASSEMBLY}{\b\i\f39\fs22\cf0\insrsid9786739 .}{\f39\fs22\cf0\insrsid9786739 \~ - You may not reverse engineer, decompile, or disassemble the Software, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.}{\insrsid9786739 -\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 4.\~\~\~\~\~\~\~\~ -}{\b\f39\fs22\insrsid9786739 NO RENTAL/COMMERCIAL HOSTING.}{\b\i\f39\fs22\insrsid9786739 }{\f39\fs22\insrsid9786739 You may not rent, lease, lend or provide commercial hosting services with the Software.}{\insrsid9786739 -\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 5.\~\~\~\~\~\~\~\~ }{ -\b\f39\fs22\cf0\insrsid9786739 NO SOFTWARE TRANSFER.\~ }{\f39\fs22\cf0\insrsid9786739 You may not assign or otherwise transfer the SOFTWARE or any of your rights hereunder to any third party.}{\insrsid9786739 -\par }{\f39\fs22\cf0\insrsid9786739 6.\~\~\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 CONSENT TO USE OF DATA.\~ }{\f39\fs22\cf0\insrsid9786739 You - agree that Microsoft and its affiliates may collect and use technical information gathered as part of the product support services provided to you, if any, related to the Software.\~ - Microsoft may use this information solely to improve our products or to provide customized services or technologies to you and will not disclose this information in a form that personally identifies you.\~\~ }{\insrsid9786739 -\par }{\f39\fs22\cf0\insrsid5510644 7}{\f39\fs22\cf0\insrsid9786739 .\~\~\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 ADDITIONAL SOFTWARE/SERVICES.\~ }{\f39\fs22\insrsid9786739 Microsoft is not obligated to provide maintenance, technical supplements}{ -\f39\fs22\insrsid14028235 , updates,}{\f39\fs22\insrsid9786739 or other support to you for the Software licensed under this EULA. }{\f39\fs22\insrsid7241305 }{\f39\fs22\insrsid9786739 In the event that Microsoft does provide such supplements or updates} -{\b\f39\fs22\insrsid9786739 , }{\f39\fs22\insrsid9786739 this EULA applies to such updates, supplements, or add-on components of the Software that Microsoft may provide to -you or make available to you after the date you obtain your initial copy of the Software, unless we provide other terms along with the update, supplement, or add-on component}{\f39\fs22\cf0\insrsid9786739 .\~ - Microsoft reserves the right to discontinue any Internet-based services provided to you or made available to you through the use of the Software.\~ }{\insrsid9786739 -\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid5510644 8}{ -\f39\fs22\insrsid9786739 .\~\~\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 EXPORT RESTRICTIONS}{\f39\fs22\insrsid9786739 .\~ }{\f39\fs22\cgrid0\insrsid9786739 You acknowledge that the Software is subject to U.S. export jurisdiction.\~ - You agree to comply with all applicable international and national laws that apply to the Software, including the U.S. Export Administration Regulations, as well as end-user, end-use, and destination restrictions issued by U.S. and other governments.\~\~ - For additional information see }{\f39\fs22\ul\cgrid0\insrsid9786739 http://www.microsoft.com/exporting/}{\f39\fs22\cgrid0\insrsid9786739 .}{\insrsid9786739 -\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid14113652 9}{ -\f39\fs22\cf0\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 TERMINATION.}{\f39\fs22\cf0\insrsid9786739 \~ Without prejudice to any other rights, Microsoft may terminate this EULA if you fail to comply with }{\f39\fs22\cf0\insrsid7241305 -any }{\f39\fs22\cf0\insrsid9786739 term}{\f39\fs22\cf0\insrsid7241305 or}{\f39\fs22\cf0\insrsid9786739 condition of this EULA. }{\f39\fs22\cf0\insrsid7241305 }{\f39\fs22\cf0\insrsid9786739 -In such event, you must destroy all copies of the Software and all of its component parts.}{\insrsid9786739 -\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1}{ -\f39\fs22\insrsid14113652 0}{\f39\fs22\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 DISCLAIMER OF WARRANTIES}{\b\f39\fs22\insrsid9786739 .\~ - TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS PROVIDE THE SOFTWARE}{\f39\fs22\insrsid9786739 }{\b\f39\fs22\insrsid9786739 AND SUPPORT SERVICES (IF ANY) }{\b\i\f39\fs22\insrsid9786739 AS IS AND WITH ALL FAULTS}{ -\b\f39\fs22\insrsid9786739 , AND HEREBY DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED - OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES, DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF RELIABILITY OR AVAILABILITY, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF WORKMANLI -K -E EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE, ALL WITH REGARD TO THE SOFTWARE, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT OR OTHER SERVICES, INFORMATION, SOFTWARE, AND RELATED CONTENT THROUGH THE SOFTWARE OR OTHERWISE ARISING OUT OF THE - USE OF THE SOFTWARE.\~ ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THE SOFTWARE.}{\insrsid9786739 -\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 1}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER DAMAGES}{\b\f39\fs22\insrsid9786739 .\~ - }{\b\caps\f39\fs22\insrsid9786739 -To the maximum extent permitted by applicable law, in no event shall Microsoft or its suppliers be liable for any special, incidental, punitive, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profit -s, LOSS OF DATA, or confidential or other information}{\b\f39\fs22\insrsid9786739 , }{\b\caps\f39\fs22\insrsid9786739 -for business interruption, for personal injury, for loss of privacy, for failure to meet any duty including of good faith or of reasonable care, for negligence, and}{\b\f39\fs22\insrsid9786739 }{\b\caps\f39\fs22\insrsid9786739 -for any other pecuniary or other los -s whatsoever) arising out of or in any way related to the use of or inability to use the SOFTWARE, the provision of or failure to provide Support OR OTHER Services, informatIon, software, and related CONTENT through the software or otherwise arising out o -f - the use of the software, or otherwise under or in connection with any provision of this EULA, even in the event of the fault, tort (including negligence), misrepresentation, strict liability, breach of contract or breach of warranty of Microsoft or any s -upplier, and even if Microsoft or any supplier has been advised of the possibility of such damages. }{\insrsid9786739 -\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 2}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 LIMITATION OF LIABILITY AND REMEDIES}{\b\f39\fs22\insrsid9786739 -. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER (INCLUDING, WITHOUT LIMITATION, A -LL DAMAGES REFERENCED HEREIN AND ALL DIRECT OR GENERAL DAMAGES IN CONTRACT OR ANYTHING ELSE), THE ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITS SUPPLIERS UNDER ANY PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY HEREUNDER SHALL BE LIMITED TO THE GREATER O -F THE ACTUAL DAMAGES YOU INCUR IN REASONABLE RELIANCE ON THE SOFTWARE UP TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE}{\f39\fs22\insrsid9786739 }{\b\f39\fs22\insrsid9786739 OR US$5.00.\~ - THE FOREGOING LIMITATIONS, EXCLUSIONS AND DISCLAIMERS SHALL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE.}{\insrsid9786739 -\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 3}{\f39\fs22\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 APPLICABLE LAW.\~ }{\f39\fs22\insrsid7735936 T}{\f39\fs22\insrsid9786739 his EULA }{\f39\fs22\insrsid7735936 -shall be construed under and }{\f39\fs22\insrsid9786739 governed by the laws of the State of Washington}{\f39\fs22\insrsid7735936 , without regard to conflicts of law principles}{\f39\fs22\insrsid9786739 .\~ }{\insrsid9786739 -\par }\pard\plain \s20\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl240\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\insrsid9786739 1}{\f39\insrsid14113652 -4}{\f39\insrsid9786739 .\~\~\~\~ }{\b\f39\insrsid9786739 ENTIRE AGREEMENT; SEVERABILITY.\~ }{\f39\insrsid9786739 This -EULA (including any addendum or amendment to this EULA which is included with the Software) are the entire agreement between you and Microsoft relating to the Software and the support services (if any) and they supersede all prior or contemporaneous oral -or written communications,\~proposals and representations with respect to the Software or any other subject matter covered by this EULA.\~ - If any provision of this EULA is held to be void, invalid, unenforceable or illegal, the other provisions shall continue in full force and effect}{\insrsid9786739 -\par }\pard\plain \qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid10440675 -\par }} \ No newline at end of file Copied: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf (from rev 5394, trunk/nhibernate/Tools/ILMerge/ILMerge License.rtf) =================================================================== --- branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf (rev 0) +++ branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge License.rtf 2011-02-24 13:58:45 UTC (rev 5395) @@ -0,0 +1,104 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} +{\f39\froman\fcharset0\fprq2{\*\panose 02040602050305030304}Book Antiqua;}{\f40\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f41\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;} +{\f42\froman\fcharset238\fprq2 Times New Roman CE;}{\f43\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f45\froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\froman\fcharset162\fprq2 Times New Roman Tur;} +{\f47\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f49\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\f412\fswiss\fcharset238\fprq2 Tahoma CE;}{\f413\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f415\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f416\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f417\fswiss\fcharset177\fprq2 Tahoma (Hebrew);} +{\f418\fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f419\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f420\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f421\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f432\froman\fcharset238\fprq2 Book Antiqua CE;} +{\f433\froman\fcharset204\fprq2 Book Antiqua Cyr;}{\f435\froman\fcharset161\fprq2 Book Antiqua Greek;}{\f436\froman\fcharset162\fprq2 Book Antiqua Tur;}{\f439\froman\fcharset186\fprq2 Book Antiqua Baltic;} +{\f442\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f443\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f445\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;}{\f446\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;} +{\f449\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f452\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f453\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f455\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;} +{\f456\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f459\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255; +\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} +{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \fi-274\li274\ri0\sb120\sl460\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin274\itap0 \f40\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 \styrsid9786739 1sectionhead;}{\s16\ql \li0\ri0\sb120\sl200\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \caps\f40\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 \styrsid9786739 4laparahead;}{\s17\ql \li0\ri-18\sb120\sl240\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-18\lin0\itap0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 \styrsid9786739 2lasubhead;}{\s18\ql \fi-187\li187\ri0\sb60\sl180\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin187\itap0 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 \styrsid9786739 3cnumbered;}{\s19\ql \fi-340\li624\ri0\sb60\sl160\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin624\itap0 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 \styrsid9786739 3inumbered2ndlevel;}{\s20\ql \li0\ri0\sb240\sl240\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 \styrsid9786739 2afrenchsubhead;}{\s21\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\cbpat9 \f37\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 \ssemihidden \styrsid7154712 Document Map;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\pgptbl {\pgp\ipgp2\itap0\li0\ri0\sb0\sa0\brdrt\brdrs\brdrw20 }{\pgp\ipgp0 +\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid2099452\rsid4207571\rsid5465292\rsid5510097\rsid5510644\rsid7154712\rsid7241305\rsid7672529\rsid7735936\rsid9179139\rsid9786739\rsid10440675\rsid11303133\rsid13130884\rsid14028235\rsid14100361\rsid14113652 +\rsid15276140\rsid16213514}{\*\generator Microsoft Word 11.0.6359;}{\info{\title ILMerge EULA}{\author Ken Leppert}{\operator mbarnett}{\creatim\yr2005\mo3\dy16\hr15\min43}{\revtim\yr2005\mo3\dy16\hr15\min43}{\printim\yr2004\mo4\dy30\hr13\min9}{\version2} +{\edmins0}{\nofpages3}{\nofwords1188}{\nofchars6775}{\*\company Microsoft Corporation}{\nofcharsws7948}{\vern24703}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180 +\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1\jexpand\viewkind1\viewscale68\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel +\wrppunct\asianbrkrule\rsidroot9786739\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang +{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain +\s15\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid7154712 \f40\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\fs28\insrsid9786739 MICROSOFT }{ +\b\f39\fs28\insrsid5465292 ILMerge}{\insrsid9786739 +\par }{\b\f39\fs22\insrsid9786739 END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE}{\insrsid9786739 +\par }\pard\plain \s17\qj \li0\ri-17\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-17\lin0\itap0\pararsid14100361 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\insrsid9786739 IMPORTANT\emdash +READ CAREFULLY: }{\f39\insrsid9786739 This End-User License Agreement (\'93EULA\'94) is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation (\'93Microsoft\'94) for th +e Microsoft software that accompanies this EULA, which includes computer software and may include associated media, printed materials, \'93online\'94 or electronic documentation, and Internet-based services (\'93Software\'94).\~ + An amendment or addendum to this EULA may accompany the Software.\~ }{\b\f39\insrsid9786739 +YOU AGREE TO BE BOUND BY THE TERMS OF THIS EULA BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE SOFTWARE.}{\insrsid9786739 +\par }\pard\plain \qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1.\~\~\~\~\~\~\~\~ }{ +\b\f39\fs22\insrsid9786739 GRANTS OF LICENSE}{\f39\fs22\insrsid9786739 . Microsoft grants you the rights described in this EULA provided that you comply with all terms and conditions of this EULA.\~ }{\insrsid9786739 +\par }\pard\plain \s19\qj \fi720\li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 1.1\~\~\~\~\~\~ }{ +\b\i\f39\fs22\cf0\insrsid9786739 License Grant}{\f39\fs22\cf0\insrsid9786739 . Microsoft grants to you a personal, nonexclusive, nontransferable, limited license to }{\f39\fs22\insrsid9786739 install and use a reasonable number of copies of +the Software on computers residing on your premises }{\f39\fs22\cf0\insrsid9786739 for the purposes of designing, developing, and testing, your software product(s), provided that you are the only individual using the Software.\~ }{\insrsid9786739 +\par }\pard\plain \s18\qj \fi720\li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1.2\~\~\~\~\~\~ }{ +\b\i\f39\fs22\insrsid9786739 Documentation}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~ }{\f39\fs22\insrsid9786739 You may make and use a reasonabl +e number of copies of any documentation, provided that such copies shall be used only for your personal purposes and are not to be republished or distributed (either in hard copy or electronic form) beyond your premises.}{\insrsid9786739 +\par }\pard \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 {\f39\fs22\insrsid9786739 2.\~\~\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 RESERVATION OF RIGHTS AND OWNERSHIP.\~ }{ +\f39\fs22\insrsid9786739 The Software is licensed as a single product.\~ Its component parts may not be separated. Microsoft reserves all rights not expressly granted to you in this EULA.\~ + The Software is protected by copyright and other intellectual property laws and treaties}{\f39\fs22\insrsid14028235 , and}{\f39\fs22\insrsid9786739 Microsoft }{\f39\fs22\insrsid14028235 (}{\f39\fs22\insrsid9786739 or its suppliers}{ +\f39\fs22\insrsid14028235 , where applicable)}{\f39\fs22\insrsid9786739 own }{\f39\fs22\insrsid14028235 all right, }{\f39\fs22\insrsid9786739 title, }{\f39\fs22\insrsid14028235 and interest in all }{\f39\fs22\insrsid9786739 +intellectual property rights in the Software.\~ }{\b\f39\fs22\insrsid9786739 The Software is licensed, not sold.}{\insrsid9786739 +\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 3.\~\~\~\~\~\~\~\~ }{ +\b\f39\fs22\cf0\insrsid9786739 LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND DISASSEMBLY}{\b\i\f39\fs22\cf0\insrsid9786739 .}{\f39\fs22\cf0\insrsid9786739 \~ + You may not reverse engineer, decompile, or disassemble the Software, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.}{\insrsid9786739 +\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 4.\~\~\~\~\~\~\~\~ +}{\b\f39\fs22\insrsid9786739 NO RENTAL/COMMERCIAL HOSTING.}{\b\i\f39\fs22\insrsid9786739 }{\f39\fs22\insrsid9786739 You may not rent, lease, lend or provide commercial hosting services with the Software.}{\insrsid9786739 +\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 5.\~\~\~\~\~\~\~\~ }{ +\b\f39\fs22\cf0\insrsid9786739 NO SOFTWARE TRANSFER.\~ }{\f39\fs22\cf0\insrsid9786739 You may not assign or otherwise transfer the SOFTWARE or any of your rights hereunder to any third party.}{\insrsid9786739 +\par }{\f39\fs22\cf0\insrsid9786739 6.\~\~\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 CONSENT TO USE OF DATA.\~ }{\f39\fs22\cf0\insrsid9786739 You + agree that Microsoft and its affiliates may collect and use technical information gathered as part of the product support services provided to you, if any, related to the Software.\~ + Microsoft may use this information solely to improve our products or to provide customized services or technologies to you and will not disclose this information in a form that personally identifies you.\~\~ }{\insrsid9786739 +\par }{\f39\fs22\cf0\insrsid5510644 7}{\f39\fs22\cf0\insrsid9786739 .\~\~\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 ADDITIONAL SOFTWARE/SERVICES.\~ }{\f39\fs22\insrsid9786739 Microsoft is not obligated to provide maintenance, technical supplements}{ +\f39\fs22\insrsid14028235 , updates,}{\f39\fs22\insrsid9786739 or other support to you for the Software licensed under this EULA. }{\f39\fs22\insrsid7241305 }{\f39\fs22\insrsid9786739 In the event that Microsoft does provide such supplements or updates} +{\b\f39\fs22\insrsid9786739 , }{\f39\fs22\insrsid9786739 this EULA applies to such updates, supplements, or add-on components of the Software that Microsoft may provide to +you or make available to you after the date you obtain your initial copy of the Software, unless we provide other terms along with the update, supplement, or add-on component}{\f39\fs22\cf0\insrsid9786739 .\~ + Microsoft reserves the right to discontinue any Internet-based services provided to you or made available to you through the use of the Software.\~ }{\insrsid9786739 +\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid5510644 8}{ +\f39\fs22\insrsid9786739 .\~\~\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 EXPORT RESTRICTIONS}{\f39\fs22\insrsid9786739 .\~ }{\f39\fs22\cgrid0\insrsid9786739 You acknowledge that the Software is subject to U.S. export jurisdiction.\~ + You agree to comply with all applicable international and national laws that apply to the Software, including the U.S. Export Administration Regulations, as well as end-user, end-use, and destination restrictions issued by U.S. and other governments.\~\~ + For additional information see }{\f39\fs22\ul\cgrid0\insrsid9786739 http://www.microsoft.com/exporting/}{\f39\fs22\cgrid0\insrsid9786739 .}{\insrsid9786739 +\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid14113652 9}{ +\f39\fs22\cf0\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 TERMINATION.}{\f39\fs22\cf0\insrsid9786739 \~ Without prejudice to any other rights, Microsoft may terminate this EULA if you fail to comply with }{\f39\fs22\cf0\insrsid7241305 +any }{\f39\fs22\cf0\insrsid9786739 term}{\f39\fs22\cf0\insrsid7241305 or}{\f39\fs22\cf0\insrsid9786739 condition of this EULA. }{\f39\fs22\cf0\insrsid7241305 }{\f39\fs22\cf0\insrsid9786739 +In such event, you must destroy all copies of the Software and all of its component parts.}{\insrsid9786739 +\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1}{ +\f39\fs22\insrsid14113652 0}{\f39\fs22\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 DISCLAIMER OF WARRANTIES}{\b\f39\fs22\insrsid9786739 .\~ + TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS PROVIDE THE SOFTWARE}{\f39\fs22\insrsid9786739 }{\b\f39\fs22\insrsid9786739 AND SUPPORT SERVICES (IF ANY) }{\b\i\f39\fs22\insrsid9786739 AS IS AND WITH ALL FAULTS}{ +\b\f39\fs22\insrsid9786739 , AND HEREBY DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED + OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES, DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF RELIABILITY OR AVAILABILITY, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF WORKMANLI +K +E EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE, ALL WITH REGARD TO THE SOFTWARE, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT OR OTHER SERVICES, INFORMATION, SOFTWARE, AND RELATED CONTENT THROUGH THE SOFTWARE OR OTHERWISE ARISING OUT OF THE + USE OF THE SOFTWARE.\~ ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THE SOFTWARE.}{\insrsid9786739 +\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 1}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER DAMAGES}{\b\f39\fs22\insrsid9786739 .\~ + }{\b\caps\f39\fs22\insrsid9786739 +To the maximum extent permitted by applicable law, in no event shall Microsoft or its suppliers be liable for any special, incidental, punitive, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profit +s, LOSS OF DATA, or confidential or other information}{\b\f39\fs22\insrsid9786739 , }{\b\caps\f39\fs22\insrsid9786739 +for business interruption, for personal injury, for loss of privacy, for failure to meet any duty including of good faith or of reasonable care, for negligence, and}{\b\f39\fs22\insrsid9786739 }{\b\caps\f39\fs22\insrsid9786739 +for any other pecuniary or other los +s whatsoever) arising out of or in any way related to the use of or inability to use the SOFTWARE, the provision of or failure to provide Support OR OTHER Services, informatIon, software, and related CONTENT through the software or otherwise arising out o +f + the use of the software, or otherwise under or in connection with any provision of this EULA, even in the event of the fault, tort (including negligence), misrepresentation, strict liability, breach of contract or breach of warranty of Microsoft or any s +upplier, and even if Microsoft or any supplier has been advised of the possibility of such damages. }{\insrsid9786739 +\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 2}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 LIMITATION OF LIABILITY AND REMEDIES}{\b\f39\fs22\insrsid9786739 +. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER (INCLUDING, WITHOUT LIMITATION, A +LL DAMAGES REFERENCED HEREIN AND ALL DIRECT OR GENERAL DAMAGES IN CONTRACT OR ANYTHING ELSE), THE ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITS SUPPLIERS UNDER ANY PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY HEREUNDER SHALL BE LIMITED TO THE GREATER O +F THE ACTUAL DAMAGES YOU INCUR IN REASONABLE RELIANCE ON THE SOFTWARE UP TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE}{\f39\fs22\insrsid9786739 }{\b\f39\fs22\insrsid9786739 OR US$5.00.\~ + THE FOREGOING LIMITATIONS, EXCLUSIONS AND DISCLAIMERS SHALL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE.}{\insrsid9786739 +\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 3}{\f39\fs22\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 APPLICABLE LAW.\~ }{\f39\fs22\insrsid7735936 T}{\f39\fs22\insrsid9786739 his EULA }{\f39\fs22\insrsid7735936 +shall be construed under and }{\f39\fs22\insrsid9786739 governed by the laws of the State of Washington}{\f39\fs22\insrsid7735936 , without regard to conflicts of law principles}{\f39\fs22\insrsid9786739 .\~ }{\insrsid9786739 +\par }\pard\plain \s20\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl240\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\insrsid9786739 1}{\f39\insrsid14113652 +4}{\f39\insrsid9786739 .\~\~\~\~ }{\b\f39\insrsid9786739 ENTIRE AGREEMENT; SEVERABILITY.\~ }{\f39\insrsid9786739 This +EULA (including any addendum or amendment to this EULA which is included with the Software) are the entire agreement between you and Microsoft relating to the Software and the support services (if any) and they supersede all prior or contemporaneous oral +or written communications,\~proposals and representations with respect to the Software or any other subject matter covered by this EULA.\~ + If any provision of this EULA is held to be void, invalid, unenforceable or illegal, the other provisions shall continue in full force and effect}{\insrsid9786739 +\par }\pard\plain \qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid10440675 +\par }} \ No newline at end of file Deleted: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.doc =================================================================== (Binary files differ) Copied: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.doc (from rev 5394, trunk/nhibernate/Tools/ILMerge/ILMerge.doc) =================================================================== (Binary files differ) Deleted: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.exe =================================================================== (Binary files differ) Copied: branches/ReadOnlyEntities/nhibernate/Tools/ILMerge/ILMerge.exe (from rev 5394, trunk/nhibernate/Tools/ILMerge/ILMerge.exe) =================================================================== (Binary files differ) Modified: branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml =================================================================== --- branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml 2011-02-24 10:05:36 UTC (rev 5394) +++ branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml 2011-02-24 13:58:45 UTC (rev 5395) @@ -100,12 +100,14 @@ depends="common.clover-setup" description="Compile sources into a DLL, using Clover if enabled"> + <property name="project.output" value="${bin.dir}/${project::get-name()}.dll" unless="${property::exists('project.output')}"/> + <csc target="library" define="${current.build.defines}" debug="${build.debug}" keyfile="${key.file}" - output="${bin.dir}/${project::get-name()}.dll" + output="${project.output}" doc="${bin.dir}/${project::get-name()}.xml" if="${sign}" optimize="${build.release}" @@ -122,7 +124,7 @@ target="library" define="${current.build.defines}" debug="${build.debug}" - output="${bin.dir}/${project::get-name()}.dll" + output="${project.output}" doc="${bin.dir}/${project::get-name()}.xml" unless="${sign}" optimize="${build.release}" @@ -250,9 +252,12 @@ depends="common.put-connection-settings-into-app-config common.run-tests common.remove-connection-settings-from-app-config" /> <target name="common.put-connection-settings-into-app-config"> - <property name="app.config" value="${bin.dir}/${project::get-name()}.dll.config" /> + <call target="common.put-connection-settings-into-defined-app-config" /> + </target> + <target name="common.put-connection-settings-into-defined-app-config"> + <!-- make sure the config file is writable --> <attrib file="${app.config}" readonly="false" /> Modified: branches/ReadOnlyEntities/nhibernate/default.build =================================================================== --- branches/ReadOnlyEntities/nhibernate/default.build 2011-02-24 10:05:36 UTC (rev 5394) +++ branches/ReadOnlyEntities/nhibernate/default.build 2011-02-24 13:58:45 UTC (rev 5395) @@ -297,9 +297,7 @@ </copy> <copy todir="${bin-pack.required}"> <fileset basedir="${bin.dir}"> - <include name="Antlr3.Runtime.dll" /> <include name="Iesi.Collections.???" /> - <include name="Remotion.Data.Linq.dll" /> <include name="NHibernate.???" /> </fileset> </copy> Modified: branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml =================================================================== --- branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-24 10:05:36 UTC (rev 5394) +++ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-24 13:58:45 UTC (rev 5395) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="no"?> <!--This file represents the results of running a test suite--> -<test-results name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" errors="77" failures="2" not-run="129" inconclusive="0" ignored="128" skipped="0" invalid="1"> - <environment nunit-version="2.5.5.10112" clr-version="2.0.50727.4952" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" cwd="C:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test" /> +<test-results name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" errors="199" failures="669" not-run="246" inconclusive="0" ignored="245" skipped="0" invalid="1"> + <environment nunit-version="2.5.5.10112" clr-version="2.0.50727.4952" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" /> <culture-info current-culture="en-GB" current-uiculture="en-US" /> <test-suite type="Assembly" name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" executed="True" result="Failure" success="False" asserts="0"> <results> @@ -9,23 +9,55 @@ <results> <test-suite type="Namespace" name="Test" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="Namespace" name="Ado" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="Ado" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="TestFixture" name="BatcherFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="BatcherFixture" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLog" description="Activating the AbstractBatcher's log the log stream:
-should not contains batch info 
-should contain SQL log info only regarding batcher (SQL log should not be duplicated)
-the batcher should work." executed="True" result="Success" success="True" asserts="3" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLogFormattedSql" description="Activating the AbstractBatcher's log the log stream:
-should contain well formatted SQL log info" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.BatchedoutputShouldBeFormatted" description="SqlClient: The batcher log output should be formatted" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripDelete" description="The batcher should run all DELETE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripInserts" description="The batcher should run all INSERT queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripUpdate" description="The batcher should run all UPDATE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLog" description="Activating the AbstractBatcher's log the log stream:
-should not contains batch info 
-should contain SQL log info only regarding batcher (SQL log should not be duplicated)
-the batcher should work." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLogFormattedSql" description="Activating the AbstractBatcher's log the log stream:
-should contain well formatted SQL log info" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.BatchedoutputShouldBeFormatted" description="SqlClient: The batcher log output should be formatted" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripDelete" description="The batcher should run all DELETE queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripInserts" description="The batcher should run all INSERT queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripUpdate" description="The batcher should run all UPDATE queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlClientOneRoundTripForUpdateAndInsert" description="SqlClient: The batcher should run all different INSERT queries in only one roundtrip." executed="False" result="Ignored"> <reason> <message><![CDATA[Not fixed yet.]]></message> </reason> </test-case> - <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLog" description="Activating the SQL and turning off the batcher's log the log stream:
-should not contains adding to batch
-should contain batch command
-the batcher should work." executed="True" result="Success" success="True" asserts="4" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLogShouldGetBatchCommandNotification" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLog" description="Activating the SQL and turning off the batcher's log the log stream:
-should not contains adding to batch
-should contain batch command
-the batcher should work." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLogShouldGetBatchCommandNotification" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> </results> </test-suite> </results> @@ -82,7 +114,7 @@ </test-suite> </results> </test-suite> - <test-suite type="Namespace" name="CacheTest" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="CacheTest" executed="True" result="Failure" success="False" asserts="0"> <results> <test-suite type="TestFixture" name="CacheFixture" executed="True" result="Success" success="True" asserts="0"> <results> @@ -90,13 +122,47 @@ <test-case name="NHibernate.Test.CacheTe... [truncated message content] |
From: <jul...@us...> - 2011-02-24 10:05:43
|
Revision: 5394 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5394&view=rev Author: julian-maughan Date: 2011-02-24 10:05:36 +0000 (Thu, 24 Feb 2011) Log Message: ----------- Minor XML documentation refinements Modified Paths: -------------- trunk/nhibernate/src/NHibernate/ICriteria.cs trunk/nhibernate/src/NHibernate/IQuery.cs trunk/nhibernate/src/NHibernate/ISession.cs Modified: trunk/nhibernate/src/NHibernate/ICriteria.cs =================================================================== --- trunk/nhibernate/src/NHibernate/ICriteria.cs 2011-02-23 09:44:22 UTC (rev 5393) +++ trunk/nhibernate/src/NHibernate/ICriteria.cs 2011-02-24 10:05:36 UTC (rev 5394) @@ -17,38 +17,39 @@ /// where there is a variable number of conditions to be placed upon the result set. /// </para> /// <para> - /// The Session is a factory for ICriteria. Expression instances are usually obtained via + /// The Session is a factory for ICriteria. Expression instances are usually obtained via /// the factory methods on <see cref="Expression" />. eg: /// </para> /// <code> - /// IList cats = session.CreateCriteria(typeof(Cat)) - /// .Add( Expression.Like("name", "Iz%") ) - /// .Add( Expression.Gt( "weight", minWeight ) ) - /// .AddOrder( Order.Asc("age") ) - /// .List(); + /// IList cats = session.CreateCriteria(typeof(Cat)) + /// .Add(Expression.Like("name", "Iz%")) + /// .Add(Expression.Gt("weight", minWeight)) + /// .AddOrder(Order.Asc("age")) + /// .List(); /// </code> - /// You may navigate associations using <see cref="CreateAlias(string,string)" /> or <see cref="CreateCriteria(string)" />. + /// You may navigate associations using <see cref="CreateAlias(string, string)" /> + /// or <see cref="CreateCriteria(string)" />. eg: /// <code> - /// IList cats = session.CreateCriteria(typeof(Cat)) - /// .CreateCriteria("kittens") - /// .Add( Expression.like("name", "Iz%") ) - /// .List(); - /// </code> + /// IList<Cat> cats = session.CreateCriteria<Cat> + /// .CreateCriteria("kittens") + /// .Add(Expression.like("name", "Iz%")) + /// .List<Cat>(); + /// </code> /// <para> - /// You may specify projection and aggregation using <tt>Projection</tt> - /// instances obtained via the factory methods on <tt>Projections</tt>. + /// You may specify projection and aggregation using <c>Projection</c> instances obtained + /// via the factory methods on <c>Projections</c>. eg: /// <code> - /// IList cats = session.CreateCriteria(typeof(Cat)) - /// .setProjection( Projections.ProjectionList() - /// .Add( Projections.RowCount() ) - /// .Add( Projections.Avg("weight") ) - /// .Add( Projections.Max("weight") ) - /// .Add( Projections.Min("weight") ) - /// .Add( Projections.GroupProperty("color") ) - /// ) - /// .AddOrder( Order.Asc("color") ) - /// .List(); - /// </code> + /// IList<Cat> cats = session.CreateCriteria<Cat> + /// .SetProjection( + /// Projections.ProjectionList() + /// .Add(Projections.RowCount()) + /// .Add(Projections.Avg("weight")) + /// .Add(Projections.Max("weight")) + /// .Add(Projections.Min("weight")) + /// .Add(Projections.GroupProperty("color"))) + /// .AddOrder(Order.Asc("color")) + /// .List<Cat>(); + /// </code> /// </para> /// </remarks> public interface ICriteria : ICloneable @@ -82,7 +83,7 @@ ICriteria Add(ICriterion expression); /// <summary> - /// An an Order to the result set + /// An an Order to the result set /// </summary> /// <param name="order"></param> ICriteria AddOrder(Order order); @@ -148,7 +149,7 @@ ICriteria CreateCriteria(string associationPath); /// <summary> - /// Create a new <see cref="ICriteria" />, "rooted" at the associated entity, + /// Create a new <see cref="ICriteria" />, "rooted" at the associated entity, /// using the specified join type. /// </summary> /// <param name="associationPath">A dot-seperated property path</param> @@ -327,7 +328,7 @@ /// Gets the root entity type if available, throws otherwise /// </summary> /// <remarks> - /// This is an NHibernate specific method, used by several dependent + /// This is an NHibernate specific method, used by several dependent /// frameworks for advance integration with NHibernate. /// </remarks> System.Type GetRootEntityTypeIfAvailable(); Modified: trunk/nhibernate/src/NHibernate/IQuery.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IQuery.cs 2011-02-23 09:44:22 UTC (rev 5393) +++ trunk/nhibernate/src/NHibernate/IQuery.cs 2011-02-24 10:05:36 UTC (rev 5394) @@ -10,39 +10,43 @@ /// An object-oriented representation of a NHibernate query. /// </summary> /// <remarks> - /// An <c>IQuery</c> instance is obtained by calling <c>ISession.CreateQuery()</c>. This interface - /// exposes some extra functionality beyond that provided by <c>ISession.Iterate()</c> and - /// <c>ISession.List()</c>; - /// <list> + /// An <c>IQuery</c> instance is obtained by calling <see cref="ISession.CreateQuery(string)" />. + /// Key features of this interface include: + /// <list type="bullet"> /// <item> - /// A particular page of the result set may be selected by calling - /// <c>SetMaxResults()</c>, <c>SetFirstResult()</c>. The generated sql + /// Paging: A particular page of the result set may be selected by calling + /// <see cref="SetMaxResults(int)" />, <see cref="SetFirstResult(int)" />. The generated SQL /// depends on the capabilities of the <see cref="Dialect.Dialect"/>. Some /// Dialects are for databases that have built in paging (LIMIT) and those capabilities - /// will be used to limit the number of records returned by the sql statement. + /// will be used to limit the number of records returned by the SQL statement. /// If the database does not support LIMITs then all of the records will be returned, /// but the objects created will be limited to the specific results requested. /// </item> - /// <item>Named query parameters may be used</item> + /// <item> + /// Named parameters + /// </item> + /// <item> + /// Ability to return 'read-only' entities + /// </item> /// </list> /// <para> - /// Named query parameters are tokens of the form <c>:name</c> in the query string. A value is bound - /// to the <c>Int32</c> parameter <c>:foo</c> by calling + /// Named query parameters are tokens of the form <c>:name</c> in the query string. For example, a + /// value is bound to the <c>Int32</c> parameter <c>:foo</c> by calling: /// <code> - /// SetParameter("foo", foo, NHibernateUtil.Int32); + /// SetParameter("foo", foo, NHibernateUtil.Int32); /// </code> - /// for example. A name may appear multiple times in the query string. + /// A name may appear multiple times in the query string. /// </para> /// <para> - /// Unnamed parameters <c>?</c> are also supported. To bind a value to an unnamed - /// parameter use a Set method that accepts an <c>Int32</c> positional argument - numbered from - /// zero. + /// Unnamed parameters <c>?</c> are also supported. To bind a value to an unnamed + /// parameter use a Set method that accepts an <c>Int32</c> positional argument - numbered from + /// zero. /// </para> /// <para> /// You may not mix and match unnamed parameters and named parameters in the same query. /// </para> /// <para> - /// Queries are executed by calling <c>List()</c> or <c>Iterate()</c>. A query + /// Queries are executed by calling <see cref="IQuery.List()" /> or <see cref="IQuery.Enumerable()" />. A query /// may be re-executed by subsequent invocations. Its lifespan is, however, bounded by the lifespan /// of the <c>ISession</c> that created it. /// </para> Modified: trunk/nhibernate/src/NHibernate/ISession.cs =================================================================== --- trunk/nhibernate/src/NHibernate/ISession.cs 2011-02-23 09:44:22 UTC (rev 5393) +++ trunk/nhibernate/src/NHibernate/ISession.cs 2011-02-24 10:05:36 UTC (rev 5394) @@ -20,16 +20,16 @@ /// <para> /// The main function of the <c>ISession</c> is to offer create, find and delete operations /// for instances of mapped entity classes. Instances may exist in one of two states: - /// <list> - /// <item>transient: not associated with any <c>ISession</c></item> - /// <item>persistent: associated with a <c>ISession</c></item> + /// <list type="bullet"> + /// <item>transient: not associated with any <c>ISession</c></item> + /// <item>persistent: associated with a <c>ISession</c></item> /// </list> /// </para> /// <para> - /// Transient instances may be made persistent by calling <c>Save()</c>, <c>Insert()</c>, - /// or <c>Update()</c>. Persistent instances may be made transient by calling <c>Delete()</c>. - /// Any instance returned by a <c>List()</c>, <c>Iterate()</c>, <c>Load()</c>, or <c>Create</c> - /// method is persistent. + /// Transient instances may be made persistent by calling <c>Save()</c>, <c>Insert()</c>, + /// or <c>Update()</c>. Persistent instances may be made transient by calling <c>Delete()</c>. + /// Any instance returned by a <c>List()</c>, <c>Enumerable()</c>, <c>Load()</c>, or <c>Create()</c> + /// method is persistent. /// </para> /// <para> /// <c>Save()</c> results in an SQL <c>INSERT</c>, <c>Delete()</c> @@ -46,26 +46,28 @@ /// </para> /// <para> /// A typical transaction should use the following idiom: - /// <code> - /// ISession sess = factory.OpenSession(); - /// ITransaction tx; - /// try { - /// tx = sess.BeginTransaction(); - /// //do some work + /// <code> + /// using (ISession session = factory.OpenSession()) + /// using (ITransaction tx = session.BeginTransaction()) + /// { + /// try + /// { + /// // do some work /// ... /// tx.Commit(); - /// } catch (Exception e) { + /// } + /// catch (Exception e) + /// { /// if (tx != null) tx.Rollback(); /// throw; - /// } finally { - /// sess.Close(); /// } - /// </code> + /// } + /// </code> /// </para> /// <para> - /// If the <c>ISession</c> throws an exception, the transaction must be rolled back and the session - /// discarded. The internal state of the <c>ISession</c> might not be consistent with the database - /// after the exception occurs. + /// If the <c>ISession</c> throws an exception, the transaction must be rolled back and the session + /// discarded. The internal state of the <c>ISession</c> might not be consistent with the database + /// after the exception occurs. /// </para> /// <seealso cref="ISessionFactory"/> /// </remarks> @@ -215,9 +217,9 @@ /// <returns>the persistent instance</returns> object Load(System.Type theType, object id, LockMode lockMode); - /// <summary> + /// <summary> /// Return the persistent instance of the given entity class with the given identifier, - /// obtaining the specified lock mode, assuming the instance exists. + /// obtaining the specified lock mode, assuming the instance exists. /// </summary> /// <param name="entityName">The entity-name of a persistent class</param> /// <param name="id">a valid identifier of an existing persistent instance of the class </param> @@ -263,7 +265,7 @@ /// <returns>The persistent instance or proxy</returns> T Load<T>(object id); - /// <summary> + /// <summary> /// Return the persistent instance of the given <paramref name="entityName"/> with the given identifier, /// assuming that the instance exists. /// </summary> @@ -278,7 +280,7 @@ object Load(string entityName, object id); /// <summary> - /// Read the persistent state associated with the given identifier into the given transient + /// Read the persistent state associated with the given identifier into the given transient /// instance. /// </summary> /// <param name="obj">An "empty" instance of the persistent class</param> @@ -286,17 +288,17 @@ void Load(object obj, object id); /// <summary> - /// Persist all reachable transient objects, reusing the current identifier + /// Persist all reachable transient objects, reusing the current identifier /// values. Note that this will not trigger the Interceptor of the Session. /// </summary> /// <param name="obj">a detached instance of a persistent class</param> /// <param name="replicationMode"></param> void Replicate(object obj, ReplicationMode replicationMode); - /// <summary> + /// <summary> /// Persist the state of the given detached instance, reusing the current /// identifier value. This operation cascades to associated instances if - /// the association is mapped with <tt>cascade="replicate"</tt>. + /// the association is mapped with <tt>cascade="replicate"</tt>. /// </summary> /// <param name="entityName"></param> /// <param name="obj">a detached instance of a persistent class </param> @@ -331,7 +333,7 @@ /// <returns> the generated identifier </returns> /// <remarks> /// This operation cascades to associated instances if the - /// association is mapped with <tt>cascade="save-update"</tt>. + /// association is mapped with <tt>cascade="save-update"</tt>. /// </remarks> object Save(string entityName, object obj); @@ -346,7 +348,7 @@ /// <param name="obj">A transient instance containing new or updated state</param> void SaveOrUpdate(object obj); - /// <summary> + /// <summary> /// Either <see cref="Save(String,Object)"/> or <see cref="Update(String,Object)"/> /// the given instance, depending upon resolution of the unsaved-value checks /// (see the manual for discussion of unsaved-value checking). @@ -357,7 +359,7 @@ /// <seealso cref="ISession.Update(String,Object)"/> /// <remarks> /// This operation cascades to associated instances if the association is mapped - /// with <tt>cascade="save-update"</tt>. + /// with <tt>cascade="save-update"</tt>. /// </remarks> void SaveOrUpdate(string entityName, object obj); @@ -382,20 +384,20 @@ /// <param name="id">Identifier of persistent instance</param> void Update(object obj, object id); - /// <summary> + /// <summary> /// Update the persistent instance with the identifier of the given detached - /// instance. + /// instance. /// </summary> /// <param name="entityName">The Entity name.</param> /// <param name="obj">a detached instance containing updated state </param> /// <remarks> /// If there is a persistent instance with the same identifier, /// an exception is thrown. This operation cascades to associated instances - /// if the association is mapped with <tt>cascade="save-update"</tt>. + /// if the association is mapped with <tt>cascade="save-update"</tt>. /// </remarks> void Update(string entityName, object obj); - /// <summary> + /// <summary> /// Copy the state of the given object onto the persistent object with the same /// identifier. If there is no persistent instance currently associated with /// the session, it will be loaded. Return the persistent instance. If the @@ -403,7 +405,7 @@ /// instance. The given instance does not become associated with the session. /// This operation cascades to associated instances if the association is mapped /// with <tt>cascade="merge"</tt>.<br/> - /// The semantics of this method are defined by JSR-220. + /// The semantics of this method are defined by JSR-220. /// </summary> /// <param name="obj">a detached instance with state to be copied </param> /// <returns> an updated persistent instance </returns> @@ -425,10 +427,10 @@ /// <returns></returns> object Merge(string entityName, object obj); - /// <summary> + /// <summary> /// Make a transient instance persistent. This operation cascades to associated /// instances if the association is mapped with <tt>cascade="persist"</tt>.<br/> - /// The semantics of this method are defined by JSR-220. + /// The semantics of this method are defined by JSR-220. /// </summary> /// <param name="obj">a transient instance to be made persistent </param> void Persist(object obj); @@ -444,9 +446,9 @@ /// <summary> /// Copy the state of the given object onto the persistent object with the same - /// identifier. If there is no persistent instance currently associated with - /// the session, it will be loaded. Return the persistent instance. If the - /// given instance is unsaved or does not exist in the database, save it and + /// identifier. If there is no persistent instance currently associated with + /// the session, it will be loaded. Return the persistent instance. If the + /// given instance is unsaved or does not exist in the database, save it and /// return it as a newly persistent instance. Otherwise, the given instance /// does not become associated with the session. /// </summary> @@ -456,8 +458,8 @@ object SaveOrUpdateCopy(object obj); /// <summary> - /// Copy the state of the given object onto the persistent object with the - /// given identifier. If there is no persistent instance currently associated + /// Copy the state of the given object onto the persistent object with the + /// given identifier. If there is no persistent instance currently associated /// with the session, it will be loaded. Return the persistent instance. If /// there is no database row with the given identifier, save the given instance /// and return it as a newly persistent instance. Otherwise, the given instance @@ -484,7 +486,7 @@ /// an instance associated with the receiving <see cref="ISession"/> or a transient /// instance with an identifier associated with existing persistent state. /// This operation cascades to associated instances if the association is mapped - /// with <tt>cascade="delete"</tt>. + /// with <tt>cascade="delete"</tt>. /// </summary> /// <param name="entityName">The entity name for the instance to be removed. </param> /// <param name="obj">the instance to be removed </param> @@ -522,8 +524,8 @@ /// <param name="lockMode">The lock level</param> void Lock(object obj, LockMode lockMode); - /// <summary> - /// Obtain the specified lock level upon the given object. + /// <summary> + /// Obtain the specified lock level upon the given object. /// </summary> /// <param name="entityName">The Entity name.</param> /// <param name="obj">a persistent or transient instance </param> @@ -629,8 +631,8 @@ /// <returns>An ICriteria object</returns> ICriteria CreateCriteria(System.Type persistentClass, string alias); - /// <summary> - /// Create a new <c>Criteria</c> instance, for the given entity name. + /// <summary> + /// Create a new <c>Criteria</c> instance, for the given entity name. /// </summary> /// <param name="entityName">The name of the entity to Query</param> /// <returns>An ICriteria object</returns> @@ -638,7 +640,7 @@ /// <summary> /// Create a new <c>Criteria</c> instance, for the given entity name, - /// with the given alias. + /// with the given alias. /// </summary> /// <param name="entityName">The name of the entity to Query</param> /// <param name="alias">The alias of the entity</param> @@ -720,10 +722,10 @@ /// <returns>a persistent instance or null</returns> object Get(System.Type clazz, object id, LockMode lockMode); - /// <summary> + /// <summary> /// Return the persistent instance of the given named entity with the given identifier, /// or null if there is no such persistent instance. (If the instance, or a proxy for the - /// instance, is already associated with the session, return that instance or proxy.) + /// instance, is already associated with the session, return that instance or proxy.) /// </summary> /// <param name="entityName">the entity name </param> /// <param name="id">an identifier </param> @@ -740,7 +742,7 @@ /// </summary> T Get<T>(object id, LockMode lockMode); - /// <summary> + /// <summary> /// Return the entity name for a persistent entity /// </summary> /// <param name="obj">a persistent entity</param> @@ -794,7 +796,7 @@ /// Implementors of the <seealso cref="ISession"/> interface should return the NHibernate implementation of this method. /// </remarks> /// <returns> - /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface + /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface /// </returns> ISessionImplementor GetSessionImplementation(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-23 09:44:28
|
Revision: 5393 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5393&view=rev Author: julian-maughan Date: 2011-02-23 09:44:22 +0000 (Wed, 23 Feb 2011) Log Message: ----------- Removed DefaultReadOnly property - not applicable to stateless sessions. Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-21 22:06:51 UTC (rev 5392) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-23 09:44:22 UTC (rev 5393) @@ -439,20 +439,6 @@ get { return false; } } - /// <inheritdoc /> - public bool DefaultReadOnly - { - get - { - return false; - } - set - { - if (value) - throw new NotSupportedException("Stateless sessions cannot be read-only"); - } - } - public override object GetEntityUsingInterceptor(EntityKey key) { CheckAndUpdateSessionStatus(); @@ -486,8 +472,8 @@ { if (entity.IsProxy()) { - INHibernateProxy proxy = entity as INHibernateProxy; - entity = proxy.HibernateLazyInitializer.GetImplementation(); + INHibernateProxy proxy = entity as INHibernateProxy; + entity = proxy.HibernateLazyInitializer.GetImplementation(); } return GuessEntityName(entity); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2011-02-21 22:07:00
|
Revision: 5392 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5392&view=rev Author: ricbrown Date: 2011-02-21 22:06:51 +0000 (Mon, 21 Feb 2011) Log Message: ----------- Added readme.txt for adding databases to TeamCity, and updated firebird fail messages. Modified Paths: -------------- trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml trunk/nhibernate/teamcity.build Added Paths: ----------- trunk/nhibernate/lib/teamcity/firebird/x64/firebird.msg trunk/nhibernate/lib/teamcity/firebird/x86/firebird.msg trunk/nhibernate/lib/teamcity/readme.txt Modified: trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml =================================================================== --- trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-21 20:41:47 UTC (rev 5391) +++ trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-21 22:06:51 UTC (rev 5392) @@ -3713,7 +3713,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.Any" executed="True" result="Success" success="True" asserts="5" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.ArraysOfTimes" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#b1d576c3cef843b595637ff62c137a46][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#898c63af550a4a7d9cc1ea03dd89acf5][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3734,7 +3734,7 @@ </test-case> <test-case name="NHibernate.Test.Legacy.FooBarTest.AutoFlushCollections" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#6274d85bb86343c3ba99932c0021032a][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#5ad01145c5b44a3783e40642b1622585][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3749,7 +3749,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.Cache" executed="True" result="Success" success="True" asserts="2" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.CachedCollection" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#ca86759d443a48e3ba4260a98d84b3ed][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#fd37c6cf99504834b42f7ff013370cc6][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3762,7 +3762,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.CascadeSave" executed="True" result="Success" success="True" asserts="2" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.CollectionCache" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#bbb09a30a23b435080c9174adcbd6b05][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#ab49aeca01d948eaa12a31c856f04044][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3773,7 +3773,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.CollectionOfSelf" executed="True" result="Success" success="True" asserts="3" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.CollectionsInSelect" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#9c9026cdea8d4ff0ad8501613e09d598][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#04d8e8e2fd394496b3351f5fd64309f8][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3819,7 +3819,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.Limit" executed="True" result="Success" success="True" asserts="2" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.ListRemove" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.StringList#9fc44b3a999b46848c7d6e3f81bf419c][SQL: INSERT INTO string_list (id, "i", element) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.StringList#746e6734dfe74f3e8a3b4a02f3c47e38][SQL: INSERT INTO string_list (id, "i", element) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3836,7 +3836,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.NamedParams" executed="True" result="Success" success="True" asserts="4" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.NewFlushing" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#1355c70032d84752989d17e464497307][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#2f60f52b76a44cb38a31bee04b108c3c][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3855,7 +3855,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.ParameterInOrderByClause" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.PersistCollections" executed="True" result="Error" success="False" asserts="1"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#6288c3015485406b8597e3d91ce03cb4][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#a7508134c96e41f1bb31e0768306a6a8][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3871,7 +3871,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.PSCache" executed="True" result="Success" success="True" asserts="7" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.Query" executed="True" result="Error" success="False" asserts="41"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#b2264161dd85488eb58baa1c0daba74b][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#ec0aa7fd59214d008e640757d0a7d62b][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3881,7 +3881,7 @@ </test-case> <test-case name="NHibernate.Test.Legacy.FooBarTest.QueryCollectionOfValues" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#005285db62a04065a3f8cfc881593bb2][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#a624e9aa44474e799c63550e047a4b9d][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3892,7 +3892,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.QueryLockMode" executed="True" result="Success" success="True" asserts="16" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.Reachability" executed="True" result="Error" success="False" asserts="4"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.StringDateMap#70ee0816e00f442eb8943f94613dce8a][SQL: INSERT INTO StringDateMap (id_, map_key, map_value) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.StringDateMap#50dfed24ede443a594ca4ebbcd725552][SQL: INSERT INTO StringDateMap (id_, map_key, map_value) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3905,7 +3905,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.RefreshTransient" executed="True" result="Success" success="True" asserts="1" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.RemoveContains" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#9e4ac767ec67476f886e444948d8e5cf][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#a96c38888fbc4212b100daaa7fb4c449][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3915,7 +3915,7 @@ </test-case> <test-case name="NHibernate.Test.Legacy.FooBarTest.ReuseDeletedCollection" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#778c40c293fa40dbb9a04645d98409e6][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#fca5573ed87f45908dab4db66ca6d0e0][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -3933,7 +3933,7 @@ <test-case name="NHibernate.Test.Legacy.FooBarTest.UpdateCollections" executed="True" result="Success" success="True" asserts="10" /> <test-case name="NHibernate.Test.Legacy.FooBarTest.UpdateFromTransient" executed="True" result="Error" success="False" asserts="2"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not update: [NHibernate.DomainModel.Fee#f89f228c44984127837ea0270da4134f][SQL: UPDATE "the fees" SET Fi = ?, TheFee = ?, AnotherFee = ?, Qux = ?, count_ = ? WHERE id_ = ?] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not update: [NHibernate.DomainModel.Fee#88f12bc53b0849e38b9f86866cb3c995][SQL: UPDATE "the fees" SET Fi = ?, TheFee = ?, AnotherFee = ?, Qux = ?, count_ = ? WHERE id_ = ?] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -4082,7 +4082,7 @@ <test-case name="NHibernate.Test.Legacy.ParentChildTest.CollectionQuery" executed="True" result="Success" success="True" asserts="12" /> <test-case name="NHibernate.Test.Legacy.ParentChildTest.ComplexCriteria" executed="True" result="Error" success="False" asserts="0"> <failure> - <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#f2e4889b42d24dbabf4610f0735e8a8e][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.DomainModel.Baz.Cached#e9ecacb9989240d288f1179f52353a0f][SQL: INSERT INTO cached_set (baz, Foo, Bar) VALUES (@p0, @p1, @p2)] ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation string right truncation ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation @@ -6346,11 +6346,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:159 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Name longer than database column size ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:159 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Name longer than database column size ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:159 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Name longer than database column size]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.BagWithLazyExtraAndFilter.Fixture.CanUseFilterForLazyExtra" executed="True" result="Failure" success="False" asserts="0"> @@ -6505,11 +6505,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.CriteriaQueryOnComponentCollection.Fixture.CanQueryByCriteriaOnSetOfCompositeElement" executed="True" result="Failure" success="False" asserts="0"> @@ -6732,11 +6732,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.Evicting.Fixture.Can_evict_entity_from_session" executed="True" result="Failure" success="False" asserts="0"> @@ -6898,11 +6898,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.ListsWithHoles.Fixture.CanHandleHolesInList" executed="True" result="Failure" success="False" asserts="0"> @@ -6919,11 +6919,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.LoadingNullEntityInSet.Fixture.CanHandleNullEntityInList" executed="True" result="Failure" success="False" asserts="0"> @@ -6985,11 +6985,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1001.Fixture.Test" executed="True" result="Failure" success="False" asserts="0"> @@ -7006,11 +7006,11 @@ <test-suite type="TestFixture" name="NH1018Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1018.NH1018Fixture.Test" executed="True" result="Failure" success="False" asserts="0"> @@ -7049,11 +7049,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ANIMAL already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ANIMAL already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table ANIMAL already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1033.Fixture.CanUseClassConstraint" executed="True" result="Failure" success="False" asserts="0"> @@ -7530,11 +7530,11 @@ <test-suite type="TestFixture" name="NH1280Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1280.NH1280Fixture.HavingOnEqProjection" executed="True" result="Failure" success="False" asserts="0"> @@ -7632,11 +7632,11 @@ <test-suite type="TestFixture" name="NH1291AnonExampleFixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1291AnonExample.NH1291AnonExampleFixture.CanCreateAnonExampleForInt" executed="True" result="Failure" success="False" asserts="0"> @@ -7709,11 +7709,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1324.Fixture.CanUseUniqueResultWithNullableType_ReturnNull_Criteria" executed="True" result="Failure" success="False" asserts="0"> @@ -7745,11 +7745,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1326.Fixture.ShouldThrowIfCallingDisconnectInsideTransaction" executed="True" result="Failure" success="False" asserts="0"> @@ -7817,11 +7817,11 @@ <test-suite type="TestFixture" name="FixtureWithBag" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1356.FixtureWithBag.Fixture.CanLoadWithGenericCompositeElement" executed="True" result="Failure" success="False" asserts="0"> @@ -7834,11 +7834,11 @@ <test-suite type="TestFixture" name="FixtureWithList" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1356.FixtureWithList.Fixture.CanLoadWithGenericCompositeElement" executed="True" result="Failure" success="False" asserts="0"> @@ -7851,11 +7851,11 @@ <test-suite type="TestFixture" name="FixtureWithSet" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1356.FixtureWithSet.Fixture.CanLoadWithGenericCompositeElement" executed="True" result="Failure" success="False" asserts="0"> @@ -7872,11 +7872,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1359.Fixture.CanGetSelectSubqueryWithSpecifiedParameter" executed="True" result="Failure" success="False" asserts="0"> @@ -7936,11 +7936,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ANIMAL already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ANIMAL already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table ANIMAL already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1391.Fixture.Can_discriminate_subclass_on_list_with_lazy_loading_when_used_get" executed="True" result="Failure" success="False" asserts="0"> @@ -7953,11 +7953,11 @@ <test-suite type="TestFixture" name="Fixture2" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ANIMAL already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ANIMAL already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table ANIMAL already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1391.Fixture2.Can_discriminate_subclass_on_list_with_lazy_loading_when_used_and_person_had_multiple_list" executed="True" result="Failure" success="False" asserts="0"> @@ -7974,11 +7974,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1393.Fixture.CanAvgProjectionOnSqlFunction" executed="True" result="Failure" success="False" asserts="0"> @@ -8010,11 +8010,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1394.Fixture.CanOrderByPropertyProjection" executed="True" result="Failure" success="False" asserts="0"> @@ -8069,11 +8069,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1403.Fixture.Bug" executed="True" result="Failure" success="False" asserts="0"> @@ -8195,11 +8195,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1447.Fixture.CanQueryByConstantProjectionWithType" executed="True" result="Failure" success="False" asserts="0"> @@ -8225,11 +8225,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1478.Fixture.TestIfColonInStringIsNotInterpretedAsParameterInHQL" executed="True" result="Failure" success="False" asserts="0"> @@ -8324,11 +8324,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1495.Fixture.CreateTest" executed="True" result="Failure" success="False" asserts="0"> @@ -8345,11 +8345,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1499.Fixture.CheckIfDetachedCriteriaCanBeUsedOnPropertyRestriction" executed="True" result="Failure" success="False" asserts="0"> @@ -8366,11 +8366,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1502.Fixture.OrderProjectionTest" executed="True" result="Failure" success="False" asserts="0"> @@ -8387,11 +8387,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ORDERS already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table ORDERS already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table ORDERS already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1507.Fixture.ExplicitJoin" executed="True" result="Failure" success="False" asserts="0"> @@ -8413,11 +8413,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1508.Fixture.DoesntThrowExceptionWhenHqlQueryIsGiven" executed="True" result="Failure" success="False" asserts="0"> @@ -8492,11 +8492,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1533.Fixture.Can_query_using_two_orderby_and_limit_altogether" executed="True" result="Failure" success="False" asserts="0"> @@ -8964,11 +8964,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table EMPLOYEES already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table EMPLOYEES already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1643.Fixture.Test" executed="True" result="Failure" success="False" asserts="0"> @@ -9010,11 +9010,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1675.Fixture.ShouldWorkUsingDistinctAndLimits" executed="True" result="Failure" success="False" asserts="0"> @@ -9070,11 +9070,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:159 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Name longer than database column size ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:159 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Name longer than database column size ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:159 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Name longer than database column size]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1691.Fixture.ComplexNest" executed="True" result="Failure" success="False" asserts="0"> @@ -9456,11 +9456,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1773.Fixture.CustomHQLFunctionsShouldBeRecognizedByTheParser" executed="True" result="Failure" success="False" asserts="0"> @@ -9600,11 +9600,11 @@ <test-suite type="TestFixture" name="Fixture" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.FirebirdClient.FbException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found +Table PERSON already exists ----> FirebirdSql.Data.Common.IscException : unsuccessful metadata update -can't format message 8:132 -- message file C:\Work\svn\nhtrunk\nhibernate\build\NHibernate-3.0.1.GA-debug\bin\net-3.5\firebird.msg not found]]></message> +Table PERSON already exists]]></message> </failure> <results> <test-case name="NHibernate.Test.NHSpecificTest.NH1794.Fixture.CanQueryOnCollectionThatAppearsOnlyInTheMapping" executed="True" result="Failure" success="False" asserts="0"> @@ -9654,11 +9654,11 @@ <test-suite type="TestFixture" name="AstBug" executed="True" result="Error" success="False" asserts="0"> <failure> <message><![CDATA[NHibernate.HibernateException : unsuccessful metadata update -can't format message 8:132 -- mess... [truncated message content] |
From: <ric...@us...> - 2011-02-21 20:41:56
|
Revision: 5391 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5391&view=rev Author: ricbrown Date: 2011-02-21 20:41:47 +0000 (Mon, 21 Feb 2011) Log Message: ----------- Updated setting of config for Firebird build Modified Paths: -------------- trunk/nhibernate/build-common/common-project.xml trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml trunk/nhibernate/src/NHibernate.Test/App.config trunk/nhibernate/src/NHibernate.Test/Cascade/Circle/MultiPathCircleCascadeTest.cs trunk/nhibernate/src/NHibernate.Test/CompositeId/ClassWithCompositeIdFixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/MapFixture.cs trunk/nhibernate/src/NHibernate.Test/Operations/MergeFixture.cs trunk/nhibernate/teamcity.build Modified: trunk/nhibernate/build-common/common-project.xml =================================================================== --- trunk/nhibernate/build-common/common-project.xml 2011-02-21 19:17:09 UTC (rev 5390) +++ trunk/nhibernate/build-common/common-project.xml 2011-02-21 20:41:47 UTC (rev 5391) @@ -252,9 +252,12 @@ depends="common.put-connection-settings-into-app-config common.run-tests common.remove-connection-settings-from-app-config" /> <target name="common.put-connection-settings-into-app-config"> - <property name="app.config" value="${bin.dir}/${project::get-name()}.dll.config" /> + <call target="common.put-connection-settings-into-defined-app-config" /> + </target> + <target name="common.put-connection-settings-into-defined-app-config"> + <!-- make sure the config file is writable --> <attrib file="${app.config}" readonly="false" /> Modified: trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml =================================================================== --- trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-21 19:17:09 UTC (rev 5390) +++ trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-21 20:41:47 UTC (rev 5391) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="no"?> <!--This file represents the results of running a test suite--> -<test-results name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" errors="77" failures="2" not-run="129" inconclusive="0" ignored="128" skipped="0" invalid="1"> - <environment nunit-version="2.5.5.10112" clr-version="2.0.50727.4952" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" cwd="C:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test" /> +<test-results name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" errors="199" failures="669" not-run="246" inconclusive="0" ignored="245" skipped="0" invalid="1"> + <environment nunit-version="2.5.5.10112" clr-version="2.0.50727.4952" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" /> <culture-info current-culture="en-GB" current-uiculture="en-US" /> <test-suite type="Assembly" name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" executed="True" result="Failure" success="False" asserts="0"> <results> @@ -9,23 +9,55 @@ <results> <test-suite type="Namespace" name="Test" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="Namespace" name="Ado" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="Ado" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="TestFixture" name="BatcherFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="BatcherFixture" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLog" description="Activating the AbstractBatcher's log the log stream:
-should not contains batch info 
-should contain SQL log info only regarding batcher (SQL log should not be duplicated)
-the batcher should work." executed="True" result="Success" success="True" asserts="3" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLogFormattedSql" description="Activating the AbstractBatcher's log the log stream:
-should contain well formatted SQL log info" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.BatchedoutputShouldBeFormatted" description="SqlClient: The batcher log output should be formatted" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripDelete" description="The batcher should run all DELETE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripInserts" description="The batcher should run all INSERT queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripUpdate" description="The batcher should run all UPDATE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLog" description="Activating the AbstractBatcher's log the log stream:
-should not contains batch info 
-should contain SQL log info only regarding batcher (SQL log should not be duplicated)
-the batcher should work." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLogFormattedSql" description="Activating the AbstractBatcher's log the log stream:
-should contain well formatted SQL log info" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.BatchedoutputShouldBeFormatted" description="SqlClient: The batcher log output should be formatted" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripDelete" description="The batcher should run all DELETE queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripInserts" description="The batcher should run all INSERT queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripUpdate" description="The batcher should run all UPDATE queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlClientOneRoundTripForUpdateAndInsert" description="SqlClient: The batcher should run all different INSERT queries in only one roundtrip." executed="False" result="Ignored"> <reason> <message><![CDATA[Not fixed yet.]]></message> </reason> </test-case> - <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLog" description="Activating the SQL and turning off the batcher's log the log stream:
-should not contains adding to batch
-should contain batch command
-the batcher should work." executed="True" result="Success" success="True" asserts="4" /> - <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLogShouldGetBatchCommandNotification" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLog" description="Activating the SQL and turning off the batcher's log the log stream:
-should not contains adding to batch
-should contain batch command
-the batcher should work." executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLogShouldGetBatchCommandNotification" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Ado.BatcherFixture does not apply with the current session-factory configuration]]></message> + </reason> + </test-case> </results> </test-suite> </results> @@ -82,7 +114,7 @@ </test-suite> </results> </test-suite> - <test-suite type="Namespace" name="CacheTest" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="CacheTest" executed="True" result="Failure" success="False" asserts="0"> <results> <test-suite type="TestFixture" name="CacheFixture" executed="True" result="Success" success="True" asserts="0"> <results> @@ -90,13 +122,47 @@ <test-case name="NHibernate.Test.CacheTest.CacheFixture.TestSimpleCache" executed="True" result="Success" success="True" asserts="24" /> </results> </test-suite> - <test-suite type="TestFixture" name="FilterKeyFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="FilterKeyFixture" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 80 +Value + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 80 +Value + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 80 +Value]]></message> + </failure> <results> - <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.Equality" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.HashCode" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEqualHashCode" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEquality" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.ToStringIncludeAll" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.Equality" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in FilterKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.HashCode" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in FilterKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEqualHashCode" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in FilterKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEquality" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in FilterKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.ToStringIncludeAll" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in FilterKeyFixture]]></message> + </failure> + </test-case> </results> </test-suite> <test-suite type="TestFixture" name="QueryCacheFixture" executed="True" result="Success" success="True" asserts="0"> @@ -104,20 +170,58 @@ <test-case name="NHibernate.Test.CacheTest.QueryCacheFixture.QueryCacheWithNullParameters" executed="True" result="Success" success="True" asserts="2" /> </results> </test-suite> - <test-suite type="TestFixture" name="QueryKeyFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="QueryKeyFixture" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 80 +Value + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 80 +Value + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 80 +Value]]></message> + </failure> <results> - <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.EqualityWithFilters" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.HashCodeWithFilters" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualHashCodeWithFilters" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualityWithFilters" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithFilters" executed="True" result="Success" success="True" asserts="2" /> - <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithMoreFilters" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.EqualityWithFilters" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in QueryKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.HashCodeWithFilters" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in QueryKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualHashCodeWithFilters" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in QueryKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualityWithFilters" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in QueryKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithFilters" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in QueryKeyFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithMoreFilters" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in QueryKeyFixture]]></message> + </failure> + </test-case> </results> </test-suite> <test-suite type="TestFixture" name="TimestamperFixture" executed="True" result="Inconclusive" success="False" asserts="0" /> </results> </test-suite> - <test-suite type="Namespace" name="Cascade" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="Cascade" executed="True" result="Failure" success="False" asserts="0"> <results> <test-suite type="Namespace" name="Circle" executed="True" result="Success" success="True" asserts="0"> <results> @@ -128,15 +232,46 @@ <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.MergeTransientChildBeforeTransientParent" executed="True" result="Success" success="True" asserts="0" /> </results> </test-suite> - <test-suite type="TestFixture" name="MultiPathCircleCascadeTest" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="MultiPathCircleCascadeTest" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> <results> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeDeliveryNode" executed="True" result="Success" success="True" asserts="26" /> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableEntityNull" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableTransientEntity" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergePickupNode" executed="True" result="Success" success="True" asserts="26" /> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeRoute" executed="True" result="Success" success="True" asserts="27" /> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTour" executed="True" result="Success" success="True" asserts="26" /> - <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTransport" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeDeliveryNode" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableEntityNull" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableTransientEntity" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergePickupNode" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeRoute" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTour" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTransport" executed="False" result="Ignored"> + <reason> + <message><![CDATA[NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest does not apply to NHibernate.Dialect.FirebirdDialect]]></message> + </reason> + </test-case> </results> </test-suite> </results> @@ -152,9 +287,17 @@ <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathUpdateModifiedDetached" executed="True" result="Success" success="True" asserts="15" /> </results> </test-suite> - <test-suite type="TestFixture" name="RefreshFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="RefreshFixture" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshCascade" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshCascade" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert: [NHibernate.Test.Cascade.Job#3][SQL: INSERT INTO T_JOB (BATCH_ID, JOB_STATUS, PI, JOB_ID) VALUES (?, ?, ?, ?)] + ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation +string right truncation + ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation +string right truncation]]></message> + </failure> + </test-case> <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshIgnoringTransient" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshIgnoringTransientInCollection" executed="True" result="Success" success="True" asserts="1" /> <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshNotIgnoringTransientByUnsavedValue" executed="True" result="Success" success="True" asserts="0" /> @@ -162,7 +305,7 @@ </test-suite> </results> </test-suite> - <test-suite type="Namespace" name="CfgTest" executed="True" result="Failure" success="False" asserts="0"> + <test-suite type="Namespace" name="CfgTest" executed="True" result="Success" success="True" asserts="0"> <results> <test-suite type="TestFixture" name="AccessorsSerializableTest" executed="True" result="Success" success="True" asserts="0"> <results> @@ -222,65 +365,13 @@ <test-case name="NHibernate.Test.CfgTest.ConfigurationAddMappingEvents.WhenSubscribedToBeforeBindThenRaiseEventForEachMapping" executed="True" result="Success" success="True" asserts="0" /> </results> </test-suite> - <test-suite type="TestFixture" name="ConfigurationFixture" executed="True" result="Failure" success="False" asserts="0"> + <test-suite type="TestFixture" name="ConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> <results> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.AddDocument" executed="True" result="Success" success="True" asserts="0" /> - <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration" executed="True" result="Error" success="False" asserts="0"> - <failure> - <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. - ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. - ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> - <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 -at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 -at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 -at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 -at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 -at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 -at NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 217 ---TargetInvocationException -at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) -at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) -at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) -at System.Activator.CreateInstance(Type type, Boolean nonPublic) -at System.Activator.CreateInstance(Type type) -at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 -at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 ---ArgumentException -at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) -at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 -at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 -]]></stack-trace> - </failure> - </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfigurationForUnmappedClass" executed="True" result="Success" success="True" asserts="1" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfigurationForUnmappedCollection" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator" executed="True" result="Error" success="False" asserts="0"> - <failure> - <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. - ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. - ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> - <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 -at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 -at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 -at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 -at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 -at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 -at NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 355 ---TargetInvocationException -at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) -at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) -at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) -at System.Activator.CreateInstance(Type type, Boolean nonPublic) -at System.Activator.CreateInstance(Type type) -at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 -at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 ---ArgumentException -at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) -at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 -at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 -]]></stack-trace> - </failure> - </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.EmptyPropertyTag" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.InvalidXmlInCfgFile" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.InvalidXmlInHbmFile" executed="True" result="Success" success="True" asserts="0" /> @@ -289,62 +380,10 @@ <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NoSessionFactoriesInConfiguration" executed="True" result="Success" success="True" asserts="1" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.PersisterWithDefaultNamespaceAndAssembly" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyValidator" executed="True" result="Success" success="True" asserts="1" /> - <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly" executed="True" result="Error" success="False" asserts="0"> - <failure> - <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. - ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. - ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> - <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 -at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 -at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 -at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 -at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 -at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 -at NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 270 ---TargetInvocationException -at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) -at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) -at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) -at System.Activator.CreateInstance(Type type, Boolean nonPublic) -at System.Activator.CreateInstance(Type type) -at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 -at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 ---ArgumentException -at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) -at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 -at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 -]]></stack-trace> - </failure> - </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly" executed="True" result="Success" success="True" asserts="0" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ReadCfgXmlFromAssembly" executed="True" result="Success" success="True" asserts="2" /> <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ReadCfgXmlFromDefaultFile" executed="True" result="Success" success="True" asserts="6" /> - <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace" executed="True" result="Error" success="False" asserts="0"> - <failure> - <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. - ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. - ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> - <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 -at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 -at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 -at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 -at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 -at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 -at NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 396 ---TargetInvocationException -at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) -at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) -at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) -at System.Activator.CreateInstance(Type type, Boolean nonPublic) -at System.Activator.CreateInstance(Type type) -at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 -at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 ---ArgumentException -at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) -at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 -at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 -]]></stack-trace> - </failure> - </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace" executed="True" result="Success" success="True" asserts="0" /> </results> </test-suite> <test-suite type="TestFixture" name="ConfigurationSchemaFixture" executed="True" result="Success" success="True" asserts="0"> @@ -473,66 +512,266 @@ </test-suite> </results> </test-suite> - <test-suite type="Namespace" name="CollectionTest" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="CollectionTest" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="TestFixture" name="IdBagFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="IdBagFixture" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-case name="NHibernate.Test.CollectionTest.IdBagFixture.Simple" executed="True" result="Success" success="True" asserts="5" /> + <test-case name="NHibernate.Test.CollectionTest.IdBagFixture.Simple" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not insert collection: [NHibernate.Test.CollectionTest.A.Items#1][SQL: INSERT INTO Items (a_id, item_id, id) VALUES (@p0, @p1, @p2)] + ----> FirebirdSql.Data.FirebirdClient.FbException : arithmetic exception, numeric overflow, or string truncation +string right truncation + ----> FirebirdSql.Data.Common.IscException : arithmetic exception, numeric overflow, or string truncation +string right truncation +TearDown : NUnit.Framework.AssertionException : Test didn't clean up after itself. session closed: False database cleaned: True connection closed: True]]></message> + </failure> + </test-case> </results> </test-suite> - <test-suite type="TestFixture" name="NullableValueTypeElementMapFixture" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="NullableValueTypeElementMapFixture" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 75 +Value + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 75 +Value + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 75 +Value]]></message> + </failure> <results> - <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.AddRemoveUntypedElements" executed="True" result="Success" success="True" asserts="11" /> - <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.ShouldAddAndRemoveNullElements" executed="True" result="Success" success="True" asserts="6" /> - <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.ShouldOverwriteElementValueWithNull" executed="True" result="Success" success="True" asserts="5" /> - <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.ShouldOverwriteNullElementWithValue" executed="True" result="Success" success="True" asserts="5" /> + <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.AddRemoveUntypedElements" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in NullableValueTypeElementMapFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.ShouldAddAndRemoveNullElements" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in NullableValueTypeElementMapFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.ShouldOverwriteElementValueWithNull" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in NullableValueTypeElementMapFixture]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.CollectionTest.NullableValueTypeElementMapFixture.ShouldOverwriteNullElementWithValue" executed="True" result="Failure" success="False" asserts="0"> + <failure> + <message><![CDATA[TestFixtureSetUp failed in NullableValueTypeElementMapFixture]]></message> + </failure> + </test-case> </results> </test-suite> </results> </test-suite> - <test-suite type="Namespace" name="Component" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="Component" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="Namespace" name="Basic" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="Namespace" name="Basic" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-suite type="TestFixture" name="ComponentTest" executed="True" result="Success" success="True" asserts="0"> + <test-suite type="TestFixture" name="ComponentTest" executed="True" result="Failure" success="False" asserts="0"> <results> - <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponent" executed="True" result="Success" success="True" asserts="6" /> - <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponentFormulaQuery" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponent" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not load an entity: [NHibernate.Test.Component.Basic.User#gavin][SQL: SELECT user0_.UserName as UserName76_0_, user0_.LastModified as LastModi2_76_0_, user0_.Password as Password76_0_, user0_.Name as Name76_0_, user0_.Dob as Dob76_0_, user0_.Address as Address76_0_, user0_.PreviousAddress as Previous7_76_0_, user0_.address as address76_0_, year(user0_.dob) as formula0_0_ FROM T_USER user0_ WHERE user0_.UserName=?] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 273 +year + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 273 +year +TearDown : NHibernate.Exceptions.GenericADOException : could not execute query +[ select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ ] +[SQL: select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponentFormulaQuery" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not execute query +[ select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ where year(user0_.dob)=1999 ] +[SQL: select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ where year(user0_.dob)=1999] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year +TearDown : NHibernate.Exceptions.GenericADOException : could not execute query +[ select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ ] +[SQL: select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year]]></message> + </failure> + </test-case> <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponentQueries" executed="False" result="Ignored"> <reason> <message><![CDATA[Ported from Hibernate - failing in NH]]></message> </reason> </test-case> - <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponentStateChangeAndDirtiness" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestComponentStateChangeAndDirtiness" executed="True" result="Error" success="False" asserts="2"> + <failure> + <message><![CDATA[TearDown : NHibernate.Exceptions.GenericADOException : could not execute query +[ select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ ] +[SQL: select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year]]></message> + </failure> + </test-case> <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestCustomColumnReadAndWrite" executed="False" result="Ignored"> <reason> <message><![CDATA[Ported from Hibernate. Read properties not supported in NH yet.]]></message> </reason> </test-case> - <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestMergeComponent" executed="True" result="Success" success="True" asserts="11" /> - <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestNamedQuery" executed="True" result="Success" success="True" asserts="0" /> - <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestUpdateFalse" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestMergeComponent" executed="True" result="Error" success="False" asserts="11"> + <failure> + <message><![CDATA[TearDown : NHibernate.Exceptions.GenericADOException : could not execute query +[ select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ ] +[SQL: select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year + ----> FirebirdSql.Data.Common.IscException : Dynamic SQL Error +SQL error code = -104 +Token unknown - line 1, column 257 +year]]></message> + </failure> + </test-case> + <test-case name="NHibernate.Test.Component.Basic.ComponentTest.TestNamedQuery" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.Exceptions.GenericADOException : could not execute query +[ select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ where user0_.Name in (@p0 , @p1 , @p2) or user0_.UserName in (@p0 , @p1 , @p2) ] + Name:nameList_0_ - Value:1ovthafew Name:nameList_1_ - Value:turin Name:nameList_2_ - Value:xam +[SQL: select user0_.UserName as UserName76_, user0_.LastModified as LastModi2_76_, user0_.Password as Password76_, user0_.Name as Name76_, user0_.Dob as Dob76_, user0_.Address as Address76_, user0_.PreviousAddress as Previous7_76_, user0_.address as address76_, year(user0_.dob) as formula0_ from T_USER user0_ where user0_.Name in (@p0 , @p1 , @p2) or user0_.UserName in (@p0 , @p1 , @p2)] + ----> FirebirdSql.Data.FirebirdClient.FbException : Dynamic SQL... [truncated message content] |
From: <pa...@us...> - 2011-02-21 19:17:16
|
Revision: 5390 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5390&view=rev Author: patearl Date: 2011-02-21 19:17:09 +0000 (Mon, 21 Feb 2011) Log Message: ----------- ILMerge internalizing Antlr3.Runtime.dll and Remotion.Data.Linq.dll into NHibernate.dll for NAnt targets. Also merges for NAnt tests to help ensure no problems occur due to merge. Modified Paths: -------------- trunk/nhibernate/build-common/common-project.xml trunk/nhibernate/default.build trunk/nhibernate/src/NHibernate/NHibernate.build trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH645/HQLFunctionFixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.build Added Paths: ----------- trunk/nhibernate/Tools/ILMerge/ trunk/nhibernate/Tools/ILMerge/ILMerge License.rtf trunk/nhibernate/Tools/ILMerge/ILMerge.doc trunk/nhibernate/Tools/ILMerge/ILMerge.exe Property changes on: trunk/nhibernate/Tools/ILMerge ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/Tools/ILMerge/ILMerge License.rtf =================================================================== --- trunk/nhibernate/Tools/ILMerge/ILMerge License.rtf (rev 0) +++ trunk/nhibernate/Tools/ILMerge/ILMerge License.rtf 2011-02-21 19:17:09 UTC (rev 5390) @@ -0,0 +1,104 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} +{\f39\froman\fcharset0\fprq2{\*\panose 02040602050305030304}Book Antiqua;}{\f40\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f41\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;} +{\f42\froman\fcharset238\fprq2 Times New Roman CE;}{\f43\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f45\froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\froman\fcharset162\fprq2 Times New Roman Tur;} +{\f47\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f49\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\f412\fswiss\fcharset238\fprq2 Tahoma CE;}{\f413\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f415\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f416\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f417\fswiss\fcharset177\fprq2 Tahoma (Hebrew);} +{\f418\fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f419\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f420\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f421\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f432\froman\fcharset238\fprq2 Book Antiqua CE;} +{\f433\froman\fcharset204\fprq2 Book Antiqua Cyr;}{\f435\froman\fcharset161\fprq2 Book Antiqua Greek;}{\f436\froman\fcharset162\fprq2 Book Antiqua Tur;}{\f439\froman\fcharset186\fprq2 Book Antiqua Baltic;} +{\f442\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f443\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f445\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;}{\f446\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;} +{\f449\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f452\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f453\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f455\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;} +{\f456\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;}{\f459\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255; +\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} +{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \fi-274\li274\ri0\sb120\sl460\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin274\itap0 \f40\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 \styrsid9786739 1sectionhead;}{\s16\ql \li0\ri0\sb120\sl200\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \caps\f40\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 \styrsid9786739 4laparahead;}{\s17\ql \li0\ri-18\sb120\sl240\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-18\lin0\itap0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 \styrsid9786739 2lasubhead;}{\s18\ql \fi-187\li187\ri0\sb60\sl180\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin187\itap0 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 \styrsid9786739 3cnumbered;}{\s19\ql \fi-340\li624\ri0\sb60\sl160\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin624\itap0 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 \styrsid9786739 3inumbered2ndlevel;}{\s20\ql \li0\ri0\sb240\sl240\slmult0 +\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 \styrsid9786739 2afrenchsubhead;}{\s21\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\cbpat9 \f37\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext21 \ssemihidden \styrsid7154712 Document Map;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\pgptbl {\pgp\ipgp2\itap0\li0\ri0\sb0\sa0\brdrt\brdrs\brdrw20 }{\pgp\ipgp0 +\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid2099452\rsid4207571\rsid5465292\rsid5510097\rsid5510644\rsid7154712\rsid7241305\rsid7672529\rsid7735936\rsid9179139\rsid9786739\rsid10440675\rsid11303133\rsid13130884\rsid14028235\rsid14100361\rsid14113652 +\rsid15276140\rsid16213514}{\*\generator Microsoft Word 11.0.6359;}{\info{\title ILMerge EULA}{\author Ken Leppert}{\operator mbarnett}{\creatim\yr2005\mo3\dy16\hr15\min43}{\revtim\yr2005\mo3\dy16\hr15\min43}{\printim\yr2004\mo4\dy30\hr13\min9}{\version2} +{\edmins0}{\nofpages3}{\nofwords1188}{\nofchars6775}{\*\company Microsoft Corporation}{\nofcharsws7948}{\vern24703}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180 +\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1\jexpand\viewkind1\viewscale68\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel +\wrppunct\asianbrkrule\rsidroot9786739\newtblstyruls\nogrowautofit \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang +{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain +\s15\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid7154712 \f40\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\fs28\insrsid9786739 MICROSOFT }{ +\b\f39\fs28\insrsid5465292 ILMerge}{\insrsid9786739 +\par }{\b\f39\fs22\insrsid9786739 END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE}{\insrsid9786739 +\par }\pard\plain \s17\qj \li0\ri-17\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-17\lin0\itap0\pararsid14100361 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\f39\insrsid9786739 IMPORTANT\emdash +READ CAREFULLY: }{\f39\insrsid9786739 This End-User License Agreement (\'93EULA\'94) is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation (\'93Microsoft\'94) for th +e Microsoft software that accompanies this EULA, which includes computer software and may include associated media, printed materials, \'93online\'94 or electronic documentation, and Internet-based services (\'93Software\'94).\~ + An amendment or addendum to this EULA may accompany the Software.\~ }{\b\f39\insrsid9786739 +YOU AGREE TO BE BOUND BY THE TERMS OF THIS EULA BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE. IF YOU DO NOT AGREE, DO NOT INSTALL, COPY, OR USE THE SOFTWARE.}{\insrsid9786739 +\par }\pard\plain \qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1.\~\~\~\~\~\~\~\~ }{ +\b\f39\fs22\insrsid9786739 GRANTS OF LICENSE}{\f39\fs22\insrsid9786739 . Microsoft grants you the rights described in this EULA provided that you comply with all terms and conditions of this EULA.\~ }{\insrsid9786739 +\par }\pard\plain \s19\qj \fi720\li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 1.1\~\~\~\~\~\~ }{ +\b\i\f39\fs22\cf0\insrsid9786739 License Grant}{\f39\fs22\cf0\insrsid9786739 . Microsoft grants to you a personal, nonexclusive, nontransferable, limited license to }{\f39\fs22\insrsid9786739 install and use a reasonable number of copies of +the Software on computers residing on your premises }{\f39\fs22\cf0\insrsid9786739 for the purposes of designing, developing, and testing, your software product(s), provided that you are the only individual using the Software.\~ }{\insrsid9786739 +\par }\pard\plain \s18\qj \fi720\li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1.2\~\~\~\~\~\~ }{ +\b\i\f39\fs22\insrsid9786739 Documentation}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~ }{\f39\fs22\insrsid9786739 You may make and use a reasonabl +e number of copies of any documentation, provided that such copies shall be used only for your personal purposes and are not to be republished or distributed (either in hard copy or electronic form) beyond your premises.}{\insrsid9786739 +\par }\pard \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 {\f39\fs22\insrsid9786739 2.\~\~\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 RESERVATION OF RIGHTS AND OWNERSHIP.\~ }{ +\f39\fs22\insrsid9786739 The Software is licensed as a single product.\~ Its component parts may not be separated. Microsoft reserves all rights not expressly granted to you in this EULA.\~ + The Software is protected by copyright and other intellectual property laws and treaties}{\f39\fs22\insrsid14028235 , and}{\f39\fs22\insrsid9786739 Microsoft }{\f39\fs22\insrsid14028235 (}{\f39\fs22\insrsid9786739 or its suppliers}{ +\f39\fs22\insrsid14028235 , where applicable)}{\f39\fs22\insrsid9786739 own }{\f39\fs22\insrsid14028235 all right, }{\f39\fs22\insrsid9786739 title, }{\f39\fs22\insrsid14028235 and interest in all }{\f39\fs22\insrsid9786739 +intellectual property rights in the Software.\~ }{\b\f39\fs22\insrsid9786739 The Software is licensed, not sold.}{\insrsid9786739 +\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 3.\~\~\~\~\~\~\~\~ }{ +\b\f39\fs22\cf0\insrsid9786739 LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND DISASSEMBLY}{\b\i\f39\fs22\cf0\insrsid9786739 .}{\f39\fs22\cf0\insrsid9786739 \~ + You may not reverse engineer, decompile, or disassemble the Software, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.}{\insrsid9786739 +\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 4.\~\~\~\~\~\~\~\~ +}{\b\f39\fs22\insrsid9786739 NO RENTAL/COMMERCIAL HOSTING.}{\b\i\f39\fs22\insrsid9786739 }{\f39\fs22\insrsid9786739 You may not rent, lease, lend or provide commercial hosting services with the Software.}{\insrsid9786739 +\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid9786739 5.\~\~\~\~\~\~\~\~ }{ +\b\f39\fs22\cf0\insrsid9786739 NO SOFTWARE TRANSFER.\~ }{\f39\fs22\cf0\insrsid9786739 You may not assign or otherwise transfer the SOFTWARE or any of your rights hereunder to any third party.}{\insrsid9786739 +\par }{\f39\fs22\cf0\insrsid9786739 6.\~\~\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 CONSENT TO USE OF DATA.\~ }{\f39\fs22\cf0\insrsid9786739 You + agree that Microsoft and its affiliates may collect and use technical information gathered as part of the product support services provided to you, if any, related to the Software.\~ + Microsoft may use this information solely to improve our products or to provide customized services or technologies to you and will not disclose this information in a form that personally identifies you.\~\~ }{\insrsid9786739 +\par }{\f39\fs22\cf0\insrsid5510644 7}{\f39\fs22\cf0\insrsid9786739 .\~\~\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 ADDITIONAL SOFTWARE/SERVICES.\~ }{\f39\fs22\insrsid9786739 Microsoft is not obligated to provide maintenance, technical supplements}{ +\f39\fs22\insrsid14028235 , updates,}{\f39\fs22\insrsid9786739 or other support to you for the Software licensed under this EULA. }{\f39\fs22\insrsid7241305 }{\f39\fs22\insrsid9786739 In the event that Microsoft does provide such supplements or updates} +{\b\f39\fs22\insrsid9786739 , }{\f39\fs22\insrsid9786739 this EULA applies to such updates, supplements, or add-on components of the Software that Microsoft may provide to +you or make available to you after the date you obtain your initial copy of the Software, unless we provide other terms along with the update, supplement, or add-on component}{\f39\fs22\cf0\insrsid9786739 .\~ + Microsoft reserves the right to discontinue any Internet-based services provided to you or made available to you through the use of the Software.\~ }{\insrsid9786739 +\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid5510644 8}{ +\f39\fs22\insrsid9786739 .\~\~\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 EXPORT RESTRICTIONS}{\f39\fs22\insrsid9786739 .\~ }{\f39\fs22\cgrid0\insrsid9786739 You acknowledge that the Software is subject to U.S. export jurisdiction.\~ + You agree to comply with all applicable international and national laws that apply to the Software, including the U.S. Export Administration Regulations, as well as end-user, end-use, and destination restrictions issued by U.S. and other governments.\~\~ + For additional information see }{\f39\fs22\ul\cgrid0\insrsid9786739 http://www.microsoft.com/exporting/}{\f39\fs22\cgrid0\insrsid9786739 .}{\insrsid9786739 +\par }\pard\plain \s19\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs14\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\cf0\insrsid14113652 9}{ +\f39\fs22\cf0\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\cf0\insrsid9786739 TERMINATION.}{\f39\fs22\cf0\insrsid9786739 \~ Without prejudice to any other rights, Microsoft may terminate this EULA if you fail to comply with }{\f39\fs22\cf0\insrsid7241305 +any }{\f39\fs22\cf0\insrsid9786739 term}{\f39\fs22\cf0\insrsid7241305 or}{\f39\fs22\cf0\insrsid9786739 condition of this EULA. }{\f39\fs22\cf0\insrsid7241305 }{\f39\fs22\cf0\insrsid9786739 +In such event, you must destroy all copies of the Software and all of its component parts.}{\insrsid9786739 +\par }\pard\plain \s18\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl220\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f41\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\fs22\insrsid9786739 1}{ +\f39\fs22\insrsid14113652 0}{\f39\fs22\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 DISCLAIMER OF WARRANTIES}{\b\f39\fs22\insrsid9786739 .\~ + TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS PROVIDE THE SOFTWARE}{\f39\fs22\insrsid9786739 }{\b\f39\fs22\insrsid9786739 AND SUPPORT SERVICES (IF ANY) }{\b\i\f39\fs22\insrsid9786739 AS IS AND WITH ALL FAULTS}{ +\b\f39\fs22\insrsid9786739 , AND HEREBY DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED + OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES, DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF RELIABILITY OR AVAILABILITY, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF WORKMANLI +K +E EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE, ALL WITH REGARD TO THE SOFTWARE, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT OR OTHER SERVICES, INFORMATION, SOFTWARE, AND RELATED CONTENT THROUGH THE SOFTWARE OR OTHERWISE ARISING OUT OF THE + USE OF THE SOFTWARE.\~ ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THE SOFTWARE.}{\insrsid9786739 +\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 1}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER DAMAGES}{\b\f39\fs22\insrsid9786739 .\~ + }{\b\caps\f39\fs22\insrsid9786739 +To the maximum extent permitted by applicable law, in no event shall Microsoft or its suppliers be liable for any special, incidental, punitive, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profit +s, LOSS OF DATA, or confidential or other information}{\b\f39\fs22\insrsid9786739 , }{\b\caps\f39\fs22\insrsid9786739 +for business interruption, for personal injury, for loss of privacy, for failure to meet any duty including of good faith or of reasonable care, for negligence, and}{\b\f39\fs22\insrsid9786739 }{\b\caps\f39\fs22\insrsid9786739 +for any other pecuniary or other los +s whatsoever) arising out of or in any way related to the use of or inability to use the SOFTWARE, the provision of or failure to provide Support OR OTHER Services, informatIon, software, and related CONTENT through the software or otherwise arising out o +f + the use of the software, or otherwise under or in connection with any provision of this EULA, even in the event of the fault, tort (including negligence), misrepresentation, strict liability, breach of contract or breach of warranty of Microsoft or any s +upplier, and even if Microsoft or any supplier has been advised of the possibility of such damages. }{\insrsid9786739 +\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 2}{\f39\fs22\insrsid9786739 .}{\b\f39\fs22\insrsid9786739 \~\~\~\~\~\~ }{\b\f39\fs22\ul\insrsid9786739 LIMITATION OF LIABILITY AND REMEDIES}{\b\f39\fs22\insrsid9786739 +. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER (INCLUDING, WITHOUT LIMITATION, A +LL DAMAGES REFERENCED HEREIN AND ALL DIRECT OR GENERAL DAMAGES IN CONTRACT OR ANYTHING ELSE), THE ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITS SUPPLIERS UNDER ANY PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY HEREUNDER SHALL BE LIMITED TO THE GREATER O +F THE ACTUAL DAMAGES YOU INCUR IN REASONABLE RELIANCE ON THE SOFTWARE UP TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE}{\f39\fs22\insrsid9786739 }{\b\f39\fs22\insrsid9786739 OR US$5.00.\~ + THE FOREGOING LIMITATIONS, EXCLUSIONS AND DISCLAIMERS SHALL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE.}{\insrsid9786739 +\par }{\f39\fs22\insrsid9786739 1}{\f39\fs22\insrsid14113652 3}{\f39\fs22\insrsid9786739 .\~\~\~\~\~\~ }{\b\f39\fs22\insrsid9786739 APPLICABLE LAW.\~ }{\f39\fs22\insrsid7735936 T}{\f39\fs22\insrsid9786739 his EULA }{\f39\fs22\insrsid7735936 +shall be construed under and }{\f39\fs22\insrsid9786739 governed by the laws of the State of Washington}{\f39\fs22\insrsid7735936 , without regard to conflicts of law principles}{\f39\fs22\insrsid9786739 .\~ }{\insrsid9786739 +\par }\pard\plain \s20\qj \li0\ri0\sb100\sa100\sbauto1\saauto1\sl240\slmult0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \f40\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\f39\insrsid9786739 1}{\f39\insrsid14113652 +4}{\f39\insrsid9786739 .\~\~\~\~ }{\b\f39\insrsid9786739 ENTIRE AGREEMENT; SEVERABILITY.\~ }{\f39\insrsid9786739 This +EULA (including any addendum or amendment to this EULA which is included with the Software) are the entire agreement between you and Microsoft relating to the Software and the support services (if any) and they supersede all prior or contemporaneous oral +or written communications,\~proposals and representations with respect to the Software or any other subject matter covered by this EULA.\~ + If any provision of this EULA is held to be void, invalid, unenforceable or illegal, the other provisions shall continue in full force and effect}{\insrsid9786739 +\par }\pard\plain \qj \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14100361 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid10440675 +\par }} \ No newline at end of file Added: trunk/nhibernate/Tools/ILMerge/ILMerge.doc =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/Tools/ILMerge/ILMerge.doc ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/nhibernate/Tools/ILMerge/ILMerge.exe =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/Tools/ILMerge/ILMerge.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/nhibernate/build-common/common-project.xml =================================================================== --- trunk/nhibernate/build-common/common-project.xml 2011-02-21 10:35:23 UTC (rev 5389) +++ trunk/nhibernate/build-common/common-project.xml 2011-02-21 19:17:09 UTC (rev 5390) @@ -100,12 +100,14 @@ depends="common.clover-setup" description="Compile sources into a DLL, using Clover if enabled"> + <property name="project.output" value="${bin.dir}/${project::get-name()}.dll" unless="${property::exists('project.output')}"/> + <csc target="library" define="${current.build.defines}" debug="${build.debug}" keyfile="${key.file}" - output="${bin.dir}/${project::get-name()}.dll" + output="${project.output}" doc="${bin.dir}/${project::get-name()}.xml" if="${sign}" optimize="${build.release}" @@ -122,7 +124,7 @@ target="library" define="${current.build.defines}" debug="${build.debug}" - output="${bin.dir}/${project::get-name()}.dll" + output="${project.output}" doc="${bin.dir}/${project::get-name()}.xml" unless="${sign}" optimize="${build.release}" Modified: trunk/nhibernate/default.build =================================================================== --- trunk/nhibernate/default.build 2011-02-21 10:35:23 UTC (rev 5389) +++ trunk/nhibernate/default.build 2011-02-21 19:17:09 UTC (rev 5390) @@ -297,9 +297,7 @@ </copy> <copy todir="${bin-pack.required}"> <fileset basedir="${bin.dir}"> - <include name="Antlr3.Runtime.dll" /> <include name="Iesi.Collections.???" /> - <include name="Remotion.Data.Linq.dll" /> <include name="NHibernate.???" /> </fileset> </copy> Modified: trunk/nhibernate/src/NHibernate/NHibernate.build =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.build 2011-02-21 10:35:23 UTC (rev 5389) +++ trunk/nhibernate/src/NHibernate/NHibernate.build 2011-02-21 19:17:09 UTC (rev 5390) @@ -13,6 +13,7 @@ <property name="assembly.description" value="An object persistence library for relational databases." /> <property name="assembly.allow-partially-trusted-callers" value="true" /> <property name="clover.instrument" value="true" /> + <property name="project.output" value="${bin.dir}/unmerged/NHibernate.dll" /> <assemblyfileset id="project.references" basedir="${bin.dir}"> <include name="System.dll" /> @@ -20,13 +21,9 @@ <include name="System.Configuration.dll" /> <include name="System.XML.dll" /> <include name="System.Data.dll" /> - <include name="System.Data.OracleClient" /> - <include name="System.Web.dll" /> <include name="Iesi.Collections.dll" /> <include name="Antlr3.Runtime.dll" /> - <include name="Remotion.dll" /> <include name="Remotion.Data.Linq.dll" /> - <include name="Remotion.Interfaces.dll" /> </assemblyfileset> <resourcefileset id="project.resources" prefix="NHibernate" dynamicprefix="true"> @@ -42,8 +39,40 @@ <target name="generate-assemblyinfo" depends="init common.generate-assemblyinfo" /> - <target name="build" description="Build NHibernate" - depends="generate-assemblyinfo common.compile-dll"> + <target name="ilmerge" depends="generate-assemblyinfo common.compile-dll"> + <uptodate property="NHibernate.dll.uptodate"> + <sourcefiles> + <include name="${bin.dir}/unmerged/NHibernate.dll"/> + </sourcefiles> + <targetfiles> + <include name="${bin.dir}/NHibernate.dll" /> + </targetfiles> + </uptodate> + + <if test="${not NHibernate.dll.uptodate}"> + <mkdir dir="${bin.dir}/merged" /> + <copy file="${bin.dir}/unmerged/NHibernate.dll" tofile="${bin.dir}/NHibernate.dll" /> + <copy file="${bin.dir}/unmerged/NHibernate.pdb" tofile="${bin.dir}/NHibernate.pdb" /> + + <exec program="../../Tools/ILMerge/ILMerge.exe"> + <arg value="/t:library" /> + <arg value="/internalize" /> + <arg value="/keyfile:../NHibernate.snk" /> + <arg value="/out:${bin.dir}/merged/NHibernate.dll" /> + <arg value="${bin.dir}/NHibernate.dll" /> + <arg value="${bin.dir}/Antlr3.Runtime.dll" /> + <arg value="${bin.dir}/Remotion.Data.Linq.dll" /> + </exec> + + <move file="${bin.dir}/merged/NHibernate.dll" tofile="${bin.dir}/NHibernate.dll" /> + <move file="${bin.dir}/merged/NHibernate.pdb" tofile="${bin.dir}/NHibernate.pdb" /> + <delete dir="${bin.dir}/merged" /> + <delete file="${bin.dir}/Antlr3.Runtime.dll" /> + <delete file="${bin.dir}/Remotion.Data.Linq.dll" /> + </if> + </target> + + <target name="build" description="Build NHibernate" depends="ilmerge"> <copy file="${bin.dir}/NHibernate.dll" tofile="${root.dir}/${lib.framework.dir}/NHibernate.dll"/> </target> Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH645/HQLFunctionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH645/HQLFunctionFixture.cs 2011-02-21 10:35:23 UTC (rev 5389) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH645/HQLFunctionFixture.cs 2011-02-21 19:17:09 UTC (rev 5390) @@ -1,6 +1,5 @@ using System; using System.Collections; -using Antlr.Runtime.Tree; using NHibernate.Cfg; using NHibernate.Dialect; using NHibernate.Dialect.Function; @@ -74,7 +73,7 @@ } else //Hql-Parser { - if (ex is RewriteEmptyStreamException || ex is InvalidCastException) + if (ex.GetType().FullName == "Antlr.Runtime.Tree.RewriteEmptyStreamException" || ex is InvalidCastException) Assert.Fail("The parser think that 'freetext' is a boolean function"); } } Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.build =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.build 2011-02-21 10:35:23 UTC (rev 5389) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.build 2011-02-21 19:17:09 UTC (rev 5390) @@ -27,7 +27,6 @@ <include name="LinFu.DynamicProxy.dll" /> <include name="nunit.framework.dll" /> <include name="SharpTestsEx.NUnit.dll" /> - <include name="Antlr3.Runtime.dll" /> <include name="System.Linq.Dynamic.dll" /> </assemblyfileset> <resourcefileset id="project.resources" prefix="NHibernate.Test" dynamicprefix="true"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-21 10:35:32
|
Revision: 5389 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5389&view=rev Author: julian-maughan Date: 2011-02-21 10:35:23 +0000 (Mon, 21 Feb 2011) Log Message: ----------- Merged latest trunk (r5388) to ReadOnlyEntities branch. Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/ShowBuildMenu.bat branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml branches/ReadOnlyEntities/nhibernate/doc/reference/modules/basic_mapping.xml branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb branches/ReadOnlyEntities/nhibernate/src/NHibernate/Bytecode/IProxyFactoryFactory.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/CascadingAction.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/ForeignKeys.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/SessionImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/NHibernate.csproj branches/ReadOnlyEntities/nhibernate/src/NHibernate/NHibernateUtil.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/NHibernateProxyHelper.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Type/CollectionType.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Type/EntityType.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.ByteCode.Castle/ProxyFactoryFactory.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.ByteCode.Castle.Tests/ProxyInterface/CustomProxyFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.ByteCode.LinFu/ProxyFactoryFactory.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.ByteCode.Spring/ProxyFactoryFactory.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Bytecode/WrongProxyFactoryFactory.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.TestDatabaseSetup/App.config branches/ReadOnlyEntities/nhibernate/src/NHibernate.TestDatabaseSetup/NHibernate.TestDatabaseSetup.csproj branches/ReadOnlyEntities/nhibernate/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.build branches/ReadOnlyEntities/nhibernate/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.sln branches/ReadOnlyEntities/nhibernate/teamcity.build Added Paths: ----------- branches/ReadOnlyEntities/nhibernate/lib/teamcity/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/fbembed.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/ib_util.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/icudt30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/icuin30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/icuuc30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/msvcp80.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/msvcr80.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/fbembed.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/ib_util.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/icudt30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/icuin30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/icuuc30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/msvcp80.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/msvcr80.dll branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs Removed Paths: ------------- branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/fbembed.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/ib_util.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/icudt30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/icuin30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/icuuc30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/msvcp80.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x64/msvcr80.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/ branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/fbembed.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/ib_util.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/icudt30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/icuin30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/icuuc30.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/msvcp80.dll branches/ReadOnlyEntities/nhibernate/lib/teamcity/firebird/x86/msvcr80.dll branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Property Changed: ---------------- branches/ReadOnlyEntities/ branches/ReadOnlyEntities/nhibernate/ branches/ReadOnlyEntities/nhibernate/src/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/ Property changes on: branches/ReadOnlyEntities ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x:4505-4508,4510-4513,4537-4538 /trunk:5306-5375 + /branches/2.1.x:4505-4508,4510-4513,4537-4538 /trunk:5306-5388 Property changes on: branches/ReadOnlyEntities/nhibernate ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate:5306-5375 + /branches/2.1.x/nhibernate:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate:5306-5388 Modified: branches/ReadOnlyEntities/nhibernate/ShowBuildMenu.bat =================================================================== --- branches/ReadOnlyEntities/nhibernate/ShowBuildMenu.bat 2011-02-20 17:45:37 UTC (rev 5388) +++ branches/ReadOnlyEntities/nhibernate/ShowBuildMenu.bat 2011-02-21 10:35:23 UTC (rev 5389) @@ -19,14 +19,18 @@ echo --- GRAMMAR --- echo H. Grammar operations (related to Hql.g and HqlSqlWalker.g) echo. +echo --- TeamCity (CI) build options +echo I. TeamCity build menu +echo. if exist %SYSTEMROOT%\System32\choice.exe ( goto prompt-choice ) goto prompt-set :prompt-choice -choice /C:abcdefgh +choice /C:abcdefghi if errorlevel 255 goto end +if errorlevel 9 goto teamcity-menu if errorlevel 8 goto grammar if errorlevel 7 goto build-release-package if errorlevel 6 goto build-release @@ -38,7 +42,7 @@ if errorlevel 0 goto end :prompt-set -set /p OPT=[A, B, C, D, E, F, G, H]? +set /p OPT=[A, B, C, D, E, F, G, H, I]? if /I "%OPT%"=="A" goto build-visual-studio if /I "%OPT%"=="B" goto help-test-setup @@ -48,6 +52,7 @@ if /I "%OPT%"=="F" goto build-release if /I "%OPT%"=="G" goto build-release-package if /I "%OPT%"=="H" goto grammar +if /I "%OPT%"=="I" goto teamcity-menu goto prompt-set :help-test-setup @@ -168,6 +173,46 @@ echo 5. You should now be connected and able to step through your grammar. goto end +:teamcity-menu +echo. +echo --- TeamCity (CI) build options +echo A. NHibernate Trunk (default SQL Server) +echo B. NHibernate Trunk - Firebird (32-bit) +echo C. NHibernate Trunk - Firebird (64-bit) +echo. + +if exist %SYSTEMROOT%\System32\choice.exe ( goto teamcity-menu-prompt-choice ) +goto teamcity-menu-prompt-set + +:teamcity-menu-prompt-choice +choice /C:abc + +if errorlevel 255 goto end +if errorlevel 3 goto teamcity-firebird64 +if errorlevel 2 goto teamcity-firebird32 +if errorlevel 1 goto teamcity-trunk +if errorlevel 0 goto end + +:teamcity-menu-prompt-set +set /p OPT=[A, B, C]? + +if /I "%OPT%"=="A" goto teamcity-trunk +if /I "%OPT%"=="B" goto teamcity-firebird32 +if /I "%OPT%"=="C" goto teamcity-firebird64 +goto teamcity-menu-prompt-set + +:teamcity-trunk +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 +goto end + +:teamcity-firebird32 +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 -D:config.teamcity=firebird32 +goto end + +:teamcity-firebird64 +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 -D:config.teamcity=firebird64 +goto end + :end popd pause Modified: branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml =================================================================== --- branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml 2011-02-20 17:45:37 UTC (rev 5388) +++ branches/ReadOnlyEntities/nhibernate/build-common/common-project.xml 2011-02-21 10:35:23 UTC (rev 5389) @@ -1,5 +1,5 @@ <?xml version="1.0" ?> -<project xmlns="http://nant.sf.net/release/0.85-rc3/nant.xsd"> +<project xmlns="http://nant.sf.net/release/0.90/nant.xsd" xsi:schemaLocation="http://nant.sf.net/release/0.90/nant.xsd ..\Tools\nant\schema\nant.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <description> <![CDATA[ @@ -227,7 +227,8 @@ <target name="common.run-tests" description="Run NUnit tests"> <call target="common.find-nunit" unless="${property::exists('nunit.found')}" /> - <exec program="${nunit-console}"> + <property name="common.run-tests.failonerror" value="${not property::exists(project::get-name() + '.IgnoreFail')}"/> + <exec program="${nunit-console}" failonerror="${common.run-tests.failonerror}"> <arg line="${bin.dir}/${project::get-name()}.dll /xml:${testresults.dir}/${project::get-name()}.dll-results.xml " /> </exec> Modified: branches/ReadOnlyEntities/nhibernate/doc/reference/modules/basic_mapping.xml =================================================================== --- branches/ReadOnlyEntities/nhibernate/doc/reference/modules/basic_mapping.xml 2011-02-20 17:45:37 UTC (rev 5388) +++ branches/ReadOnlyEntities/nhibernate/doc/reference/modules/basic_mapping.xml 2011-02-21 10:35:23 UTC (rev 5389) @@ -1295,7 +1295,7 @@ <entry> <para> The <literal>name</literal> attribute is converted to camel case to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>fooBar</literal>. </para> </entry> </row> @@ -1305,18 +1305,28 @@ <para> The <literal>name</literal> attribute is converted to camel case and prefixed with an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>_foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>_fooBar</literal>. </para> - </entry> + </entry> </row> <row> + <entry><literal>camelcase-m-underscore</literal></entry> + <entry> + <para> + The <literal>name</literal> attribute is converted to camel case and prefixed with + the character <literal>m</literal> and an underscore to find the field. + <literal><property name="FooBar" ... ></literal> uses the field <literal>m_fooBar</literal>. + </para> + </entry> + </row> + <row> <entry><literal>lowercase</literal></entry> <entry> <para> The <literal>name</literal> attribute is converted to lower case to find the Field. <literal><property name="FooBar" ... ></literal> uses the field <literal>foobar</literal>. </para> - </entry> + </entry> </row> <row> <entry><literal>lowercase-underscore</literal></entry> @@ -1333,7 +1343,7 @@ <entry> <para> The <literal>name</literal> attribute is prefixed with an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>_Foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>_FooBar</literal>. </para> </entry> </row> @@ -1343,7 +1353,7 @@ <para> The <literal>name</literal> attribute is prefixed with the character <literal>m</literal> to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>mFoo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>mFooBar</literal>. </para> </entry> </row> @@ -1353,7 +1363,7 @@ <para> The <literal>name</literal> attribute is prefixed with the character <literal>m</literal> and an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>m_Foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>m_FooBar</literal>. </para> </entry> </row> Modified: branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Deleted: branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml =================================================================== --- branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-20 17:45:37 UTC (rev 5388) +++ branches/ReadOnlyEntities/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-21 10:35:23 UTC (rev 5389) @@ -1,1253 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><doc><assembly> - <name>Remotion.Data.Linq</name> - </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> - Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into - an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the - result set. - </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> - Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by - first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this - constructor to specify a specific set of parsers to use when analyzing the query. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> - parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This - method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is - called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> - Executes the query defined by the specified expression by parsing it with a - <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. - This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as - <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and - <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> - The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> - Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> - Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> - trees. - </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that - represents the query defined by <paramref name="expression" /> and is able to enumerate its results. - </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> - Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> - (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. - </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> - Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface - and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. - </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. - The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> - Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type - <typeparamref name="T" />. - The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; - if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. - The query does not end with a scalar result operator, but it can end with a single result operator, for example - <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly - one object (or none if the last result operator allows empty result sets). - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> - Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> - Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable - class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to - execute the query. This is then used as an entry point (the main data source) of a LINQ query. - </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given - <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by - this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor - should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and - <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the - <see cref="T:System.Linq.Queryable" /> class) is called. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> - Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> - Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the - query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> - Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> - Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. - </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> - Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based - on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct - a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> - </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items - that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of - the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the - <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> - Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with - the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> - Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> - Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> - Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> - that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, - this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. - </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> - Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added - in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses - than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not - for uniquely identifying clauses. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> - Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls - <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> - Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses - whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> - Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by - the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> - Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the - items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> - modify the result of the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> - Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, - filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise - processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> - Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, - filtering, or otherwise processing the result before it is returned. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> - Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then - create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, - then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> - Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default - implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> - and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the - <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. - </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> - Generates unique identifiers based on a set of known identifiers. - An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier - exists which equals the prefix/number combination. - </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> - Adds the given <paramref name="identifier" /> to the set of known identifiers. - </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> - Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the - prefix so that the resulting string does not match a known identifier. - </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> - TODO: add summary - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> - Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to - a tree of standard expressions with equivalent semantics. - </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> - Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. - </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> - Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> - is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> - Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when - <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. - Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. - </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all - children of this extension node. - </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> - Gets a value indicating whether this instance can be reduced to a tree of standard expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> - This interface should be implemented by visitors that handle VB-specific expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> - Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always - point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be - thrown at runtime. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> - Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by - comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. - </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> - Gets the query source referenced by this expression. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> - Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> - Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. - To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> - or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. - </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> - Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a - strongly typed fashion. - This is the base class of many transformation classes. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a - complex <paramref name="fullExpression" />. - </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> - Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, - as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped - to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> - to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. - This is used whenever references to query sources should be replaced by a transformation. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given - <paramref name="querySourceMapping" />. - </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, - the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> - instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. - </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> - Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. - It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done - to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions - will not work. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input - parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.Rev... [truncated message content] |
From: <ric...@us...> - 2011-02-20 17:45:44
|
Revision: 5388 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5388&view=rev Author: ricbrown Date: 2011-02-20 17:45:37 +0000 (Sun, 20 Feb 2011) Log Message: ----------- Attempt to get more detailed error from TeamCity failure (for Firebird) Modified Paths: -------------- trunk/nhibernate/teamcity.build Modified: trunk/nhibernate/teamcity.build =================================================================== --- trunk/nhibernate/teamcity.build 2011-02-20 15:38:28 UTC (rev 5387) +++ trunk/nhibernate/teamcity.build 2011-02-20 17:45:37 UTC (rev 5388) @@ -85,19 +85,27 @@ [Function("StripTimings")] public static string StripTimings(string testResultFile, string outputFile) { - XmlDocument testResults = new XmlDocument(); - testResults.Load(testResultFile); + try + { + XmlDocument testResults = new XmlDocument(); + testResults.Load(testResultFile); - StripAttributes(testResults, "//@total"); - StripAttributes(testResults, "//@date"); - StripAttributes(testResults, "//@time"); - StripAttributes(testResults, "//@machine-name"); - StripAttributes(testResults, "//@user"); - StripAttributes(testResults, "//@user-domain"); + StripAttributes(testResults, "//@total"); + StripAttributes(testResults, "//@date"); + StripAttributes(testResults, "//@time"); + StripAttributes(testResults, "//@machine-name"); + StripAttributes(testResults, "//@user"); + StripAttributes(testResults, "//@user-domain"); - outputFile = Path.GetDirectoryName(testResultFile) + "/" + outputFile; - testResults.Save(outputFile); - return outputFile; + outputFile = Path.GetDirectoryName(testResultFile) + "/" + outputFile; + testResults.Save(outputFile); + return outputFile; + } + catch(Exception e) + { + Console.WriteLine(e); + throw; + } } public class Result @@ -137,97 +145,105 @@ [Function("CompareResults")] public static string CompareResults(string currentResult, string lastResult) { - string outputFile = Path.GetDirectoryName(currentResult) + "/Comparison.txt"; - StringBuilder report = new StringBuilder(); + try + { + string outputFile = Path.GetDirectoryName(currentResult) + "/Comparison.txt"; + StringBuilder report = new StringBuilder(); - report.AppendLine("Comparison Results"); - report.AppendLine("=================="); + report.AppendLine("Comparison Results"); + report.AppendLine("=================="); - IList<Result> before = Result.ParseFile(lastResult); - IList<Result> after = Result.ParseFile(currentResult); + IList<Result> before = Result.ParseFile(lastResult); + IList<Result> after = Result.ParseFile(currentResult); - IList<string> beforeTestNames = new List<string>(); - IList<string> afterTestNames = new List<string>(); + IList<string> beforeTestNames = new List<string>(); + IList<string> afterTestNames = new List<string>(); - foreach(Result result in before) beforeTestNames.Add(result.Name); - foreach(Result result in after) afterTestNames.Add(result.Name); + foreach(Result result in before) beforeTestNames.Add(result.Name); + foreach(Result result in after) afterTestNames.Add(result.Name); - IList<Result> afterExistingTests = new List<Result>(); - foreach(Result result in after) - if (beforeTestNames.Contains(result.Name)) - afterExistingTests.Add(result); + IList<Result> afterExistingTests = new List<Result>(); + foreach(Result result in after) + if (beforeTestNames.Contains(result.Name)) + afterExistingTests.Add(result); - IList<Result> newTests = new List<Result>(); - foreach(Result result in after) - if (!beforeTestNames.Contains(result.Name)) - newTests.Add(result); + IList<Result> newTests = new List<Result>(); + foreach(Result result in after) + if (!beforeTestNames.Contains(result.Name)) + newTests.Add(result); - report.AppendLine(); - report.AppendLine("*** Tests new since last recorded results ***"); - if (newTests.Count > 0) - { - foreach(Result result in newTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); - } - else - report.AppendLine("None"); + report.AppendLine(); + report.AppendLine("*** Tests new since last recorded results ***"); + if (newTests.Count > 0) + { + foreach(Result result in newTests) + report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + } + else + report.AppendLine("None"); - IList<Result> fixedTests = new List<Result>(); - foreach(Result afterResult in afterExistingTests) - foreach(Result beforeResult in before) - if (beforeResult.Name == afterResult.Name) - if (!beforeResult.Success && afterResult.Success) - fixedTests.Add(afterResult); + IList<Result> fixedTests = new List<Result>(); + foreach(Result afterResult in afterExistingTests) + foreach(Result beforeResult in before) + if (beforeResult.Name == afterResult.Name) + if (!beforeResult.Success && afterResult.Success) + fixedTests.Add(afterResult); - report.AppendLine(); - report.AppendLine("*** Tests fixed since last recorded results ***"); - if (fixedTests.Count > 0) - { - foreach(Result result in fixedTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); - } - else - report.AppendLine("None"); + report.AppendLine(); + report.AppendLine("*** Tests fixed since last recorded results ***"); + if (fixedTests.Count > 0) + { + foreach(Result result in fixedTests) + report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + } + else + report.AppendLine("None"); - IList<Result> missingTests = new List<Result>(); - foreach(Result result in before) - if (!afterTestNames.Contains(result.Name)) - missingTests.Add(result); + IList<Result> missingTests = new List<Result>(); + foreach(Result result in before) + if (!afterTestNames.Contains(result.Name)) + missingTests.Add(result); - report.AppendLine(); - report.AppendLine("*** Tests missing since last recorded results ***"); - if (missingTests.Count > 0) - { - foreach(Result result in missingTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); - } - else - report.AppendLine("None"); + report.AppendLine(); + report.AppendLine("*** Tests missing since last recorded results ***"); + if (missingTests.Count > 0) + { + foreach(Result result in missingTests) + report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + } + else + report.AppendLine("None"); - IList<Result> brokenTests = new List<Result>(); - foreach(Result afterResult in afterExistingTests) - foreach(Result beforeResult in before) - if (beforeResult.Name == afterResult.Name) - if (beforeResult.Success && !afterResult.Success) - brokenTests.Add(afterResult); + IList<Result> brokenTests = new List<Result>(); + foreach(Result afterResult in afterExistingTests) + foreach(Result beforeResult in before) + if (beforeResult.Name == afterResult.Name) + if (beforeResult.Success && !afterResult.Success) + brokenTests.Add(afterResult); - report.AppendLine(); - report.AppendLine("*** Tests broken since last recorded results ***"); - if (brokenTests.Count > 0) - { - foreach(Result result in brokenTests) - report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); - } - else - report.AppendLine("None"); + report.AppendLine(); + report.AppendLine("*** Tests broken since last recorded results ***"); + if (brokenTests.Count > 0) + { + foreach(Result result in brokenTests) + report.AppendLine((result.Success ? "PASS - " : "FAIL - ") + result.Name); + } + else + report.AppendLine("None"); - string output = report.ToString(); - File.WriteAllText(outputFile, output); + string output = report.ToString(); + File.WriteAllText(outputFile, output); - if (brokenTests.Count > 0) - throw new Exception("Previously passing tests have been broken\n\n" + output); + if (brokenTests.Count > 0) + throw new Exception("Previously passing tests have been broken\n\n" + output); - return output; + return output; + } + catch(Exception e) + { + Console.WriteLine(e); + throw; + } } ]]> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2011-02-20 15:38:39
|
Revision: 5387 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5387&view=rev Author: ricbrown Date: 2011-02-20 15:38:28 +0000 (Sun, 20 Feb 2011) Log Message: ----------- First cut of build for Firebird dialect on Teamcity Modified Paths: -------------- trunk/nhibernate/ShowBuildMenu.bat trunk/nhibernate/build-common/common-project.xml trunk/nhibernate/src/NHibernate.TestDatabaseSetup/App.config trunk/nhibernate/src/NHibernate.TestDatabaseSetup/NHibernate.TestDatabaseSetup.csproj trunk/nhibernate/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.build trunk/nhibernate/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs trunk/nhibernate/src/NHibernate.sln trunk/nhibernate/teamcity.build Added Paths: ----------- trunk/nhibernate/lib/teamcity/ trunk/nhibernate/lib/teamcity/firebird/ trunk/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml trunk/nhibernate/lib/teamcity/firebird/x64/ trunk/nhibernate/lib/teamcity/firebird/x64/fbembed.dll trunk/nhibernate/lib/teamcity/firebird/x64/ib_util.dll trunk/nhibernate/lib/teamcity/firebird/x64/icudt30.dll trunk/nhibernate/lib/teamcity/firebird/x64/icuin30.dll trunk/nhibernate/lib/teamcity/firebird/x64/icuuc30.dll trunk/nhibernate/lib/teamcity/firebird/x64/msvcp80.dll trunk/nhibernate/lib/teamcity/firebird/x64/msvcr80.dll trunk/nhibernate/lib/teamcity/firebird/x86/ trunk/nhibernate/lib/teamcity/firebird/x86/fbembed.dll trunk/nhibernate/lib/teamcity/firebird/x86/ib_util.dll trunk/nhibernate/lib/teamcity/firebird/x86/icudt30.dll trunk/nhibernate/lib/teamcity/firebird/x86/icuin30.dll trunk/nhibernate/lib/teamcity/firebird/x86/icuuc30.dll trunk/nhibernate/lib/teamcity/firebird/x86/msvcp80.dll trunk/nhibernate/lib/teamcity/firebird/x86/msvcr80.dll Modified: trunk/nhibernate/ShowBuildMenu.bat =================================================================== --- trunk/nhibernate/ShowBuildMenu.bat 2011-02-20 05:11:20 UTC (rev 5386) +++ trunk/nhibernate/ShowBuildMenu.bat 2011-02-20 15:38:28 UTC (rev 5387) @@ -19,14 +19,18 @@ echo --- GRAMMAR --- echo H. Grammar operations (related to Hql.g and HqlSqlWalker.g) echo. +echo --- TeamCity (CI) build options +echo I. TeamCity build menu +echo. if exist %SYSTEMROOT%\System32\choice.exe ( goto prompt-choice ) goto prompt-set :prompt-choice -choice /C:abcdefgh +choice /C:abcdefghi if errorlevel 255 goto end +if errorlevel 9 goto teamcity-menu if errorlevel 8 goto grammar if errorlevel 7 goto build-release-package if errorlevel 6 goto build-release @@ -38,7 +42,7 @@ if errorlevel 0 goto end :prompt-set -set /p OPT=[A, B, C, D, E, F, G, H]? +set /p OPT=[A, B, C, D, E, F, G, H, I]? if /I "%OPT%"=="A" goto build-visual-studio if /I "%OPT%"=="B" goto help-test-setup @@ -48,6 +52,7 @@ if /I "%OPT%"=="F" goto build-release if /I "%OPT%"=="G" goto build-release-package if /I "%OPT%"=="H" goto grammar +if /I "%OPT%"=="I" goto teamcity-menu goto prompt-set :help-test-setup @@ -168,6 +173,46 @@ echo 5. You should now be connected and able to step through your grammar. goto end +:teamcity-menu +echo. +echo --- TeamCity (CI) build options +echo A. NHibernate Trunk (default SQL Server) +echo B. NHibernate Trunk - Firebird (32-bit) +echo C. NHibernate Trunk - Firebird (64-bit) +echo. + +if exist %SYSTEMROOT%\System32\choice.exe ( goto teamcity-menu-prompt-choice ) +goto teamcity-menu-prompt-set + +:teamcity-menu-prompt-choice +choice /C:abc + +if errorlevel 255 goto end +if errorlevel 3 goto teamcity-firebird64 +if errorlevel 2 goto teamcity-firebird32 +if errorlevel 1 goto teamcity-trunk +if errorlevel 0 goto end + +:teamcity-menu-prompt-set +set /p OPT=[A, B, C]? + +if /I "%OPT%"=="A" goto teamcity-trunk +if /I "%OPT%"=="B" goto teamcity-firebird32 +if /I "%OPT%"=="C" goto teamcity-firebird64 +goto teamcity-menu-prompt-set + +:teamcity-trunk +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 +goto end + +:teamcity-firebird32 +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 -D:config.teamcity=firebird32 +goto end + +:teamcity-firebird64 +%NANT% /f:teamcity.build -D:skip.manual=true -D:CCNetLabel=-1 -D:config.teamcity=firebird64 +goto end + :end popd pause Modified: trunk/nhibernate/build-common/common-project.xml =================================================================== --- trunk/nhibernate/build-common/common-project.xml 2011-02-20 05:11:20 UTC (rev 5386) +++ trunk/nhibernate/build-common/common-project.xml 2011-02-20 15:38:28 UTC (rev 5387) @@ -1,5 +1,5 @@ <?xml version="1.0" ?> -<project xmlns="http://nant.sf.net/release/0.85-rc3/nant.xsd"> +<project xmlns="http://nant.sf.net/release/0.90/nant.xsd" xsi:schemaLocation="http://nant.sf.net/release/0.90/nant.xsd ..\Tools\nant\schema\nant.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <description> <![CDATA[ @@ -227,7 +227,8 @@ <target name="common.run-tests" description="Run NUnit tests"> <call target="common.find-nunit" unless="${property::exists('nunit.found')}" /> - <exec program="${nunit-console}"> + <property name="common.run-tests.failonerror" value="${not property::exists(project::get-name() + '.IgnoreFail')}"/> + <exec program="${nunit-console}" failonerror="${common.run-tests.failonerror}"> <arg line="${bin.dir}/${project::get-name()}.dll /xml:${testresults.dir}/${project::get-name()}.dll-results.xml " /> </exec> Property changes on: trunk/nhibernate/lib/teamcity ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Property changes on: trunk/nhibernate/lib/teamcity/firebird ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/lib/teamcity/firebird/FirebirdSql.Data.FirebirdClient.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml =================================================================== --- trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml (rev 0) +++ trunk/nhibernate/lib/teamcity/firebird/NHibernate.Test.last-results.xml 2011-02-20 15:38:28 UTC (rev 5387) @@ -0,0 +1,11357 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!--This file represents the results of running a test suite--> +<test-results name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" errors="77" failures="2" not-run="129" inconclusive="0" ignored="128" skipped="0" invalid="1"> + <environment nunit-version="2.5.5.10112" clr-version="2.0.50727.4952" os-version="Microsoft Windows NT 6.1.7600.0" platform="Win32NT" cwd="C:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test" /> + <culture-info current-culture="en-GB" current-uiculture="en-US" /> + <test-suite type="Assembly" name="../../build/NHibernate-3.0.1.GA-debug/bin/net-3.5/NHibernate.Test.dll" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="Namespace" name="NHibernate" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="Namespace" name="Test" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="Namespace" name="Ado" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="BatcherFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLog" description="Activating the AbstractBatcher's log the log stream:
-should not contains batch info 
-should contain SQL log info only regarding batcher (SQL log should not be duplicated)
-the batcher should work." executed="True" result="Success" success="True" asserts="3" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.AbstractBatcherLogFormattedSql" description="Activating the AbstractBatcher's log the log stream:
-should contain well formatted SQL log info" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.BatchedoutputShouldBeFormatted" description="SqlClient: The batcher log output should be formatted" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripDelete" description="The batcher should run all DELETE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripInserts" description="The batcher should run all INSERT queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.OneRoundTripUpdate" description="The batcher should run all UPDATE queries in only one roundtrip." executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlClientOneRoundTripForUpdateAndInsert" description="SqlClient: The batcher should run all different INSERT queries in only one roundtrip." executed="False" result="Ignored"> + <reason> + <message><![CDATA[Not fixed yet.]]></message> + </reason> + </test-case> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLog" description="Activating the SQL and turning off the batcher's log the log stream:
-should not contains adding to batch
-should contain batch command
-the batcher should work." executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Ado.BatcherFixture.SqlLogShouldGetBatchCommandNotification" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="Any" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="AnyTypeTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Any.AnyTypeTest.FlushProcessing" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="BulkManipulation" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="HqlBulkOperations" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.BulkManipulation.HqlBulkOperations.SimpleDelete" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="NativeSQLBulkOperations" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.BulkManipulation.NativeSQLBulkOperations.SimpleNativeSQLInsert" executed="True" result="Success" success="True" asserts="8" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="Bytecode" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="ActivatorObjectFactoryFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceDefCtor" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceOfValueType" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceWithArguments" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.Bytecode.ActivatorObjectFactoryFixture.CreateInstanceWithNoPublicCtor" executed="True" result="Success" success="True" asserts="3" /> + </results> + </test-suite> + <test-suite type="Namespace" name="Lightweight" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="BytecodeProviderFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.CantCreateProxyFactoryFactory" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.CollectionTypeFactoryCantChangeAfterUsage" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.DoesNotImplementProxyFactoryFactory" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.InvalidCollectionTypeFactoryCtor" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.NotConfiguredCollectionTypeFactory" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.NotConfiguredProxyFactoryFactory" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.SetCollectionTypeFactoryClassByName" executed="True" result="Success" success="True" asserts="3" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.SetCollectionTypeFactoryClassByType" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Bytecode.Lightweight.BytecodeProviderFixture.UnableToLoadProxyFactoryFactory" executed="True" result="Success" success="True" asserts="3" /> + </results> + </test-suite> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="CacheTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="CacheFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.CacheFixture.MinValueTimestamp" executed="True" result="Success" success="True" asserts="6" /> + <test-case name="NHibernate.Test.CacheTest.CacheFixture.TestSimpleCache" executed="True" result="Success" success="True" asserts="24" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="FilterKeyFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.Equality" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.HashCode" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEqualHashCode" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.NotEquality" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.FilterKeyFixture.ToStringIncludeAll" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="QueryCacheFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.QueryCacheFixture.QueryCacheWithNullParameters" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="QueryKeyFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.EqualityWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.HashCodeWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualHashCodeWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.NotEqualityWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithFilters" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CacheTest.QueryKeyFixture.ToStringWithMoreFilters" executed="True" result="Success" success="True" asserts="1" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="TimestamperFixture" executed="True" result="Inconclusive" success="False" asserts="0" /> + </results> + </test-suite> + <test-suite type="Namespace" name="Cascade" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="Namespace" name="Circle" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="CascadeMergeToChildBeforeParentTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.Merge" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.MergeData3Nodes" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Cascade.Circle.CascadeMergeToChildBeforeParentTest.MergeTransientChildBeforeTransientParent" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="MultiPathCircleCascadeTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeDeliveryNode" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableEntityNull" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeEntityWithNonNullableTransientEntity" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergePickupNode" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeRoute" executed="True" result="Success" success="True" asserts="27" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTour" executed="True" result="Success" success="True" asserts="26" /> + <test-case name="NHibernate.Test.Cascade.Circle.MultiPathCircleCascadeTest.MergeTransport" executed="True" result="Success" success="True" asserts="26" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="TestFixture" name="MultiPathCascadeTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathGetAndModify" executed="True" result="Success" success="True" asserts="15" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeModifiedDetached" executed="True" result="Success" success="True" asserts="15" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeModifiedDetachedIntoProxy" executed="True" result="Success" success="True" asserts="17" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeNonCascadedTransientEntityInCollection" executed="True" result="Success" success="True" asserts="16" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeNonCascadedTransientEntityInManyToOne" executed="True" result="Success" success="True" asserts="16" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathMergeNonCascadedTransientEntityInOneToOne" executed="True" result="Success" success="True" asserts="15" /> + <test-case name="NHibernate.Test.Cascade.MultiPathCascadeTest.MultiPathUpdateModifiedDetached" executed="True" result="Success" success="True" asserts="15" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="RefreshFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshCascade" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshIgnoringTransient" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshIgnoringTransientInCollection" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.Cascade.RefreshFixture.RefreshNotIgnoringTransientByUnsavedValue" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="Namespace" name="CfgTest" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-suite type="TestFixture" name="AccessorsSerializableTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="ParameterizedTest" name="AllAccessorsAreMarkedAsSerializable" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.BackrefPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.BasicPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.ChainedPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.EmbeddedPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.FieldAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.IndexPropertyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.MapAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.NoopAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.NoSetterAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.ReadOnlyAccessor)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllAccessorsAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor)" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="ParameterizedTest" name="AllGettersAreMarkedAsSerializable" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.BackrefPropertyAccessor+BackrefGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.BasicPropertyAccessor+BasicGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.FieldAccessor+FieldGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.IndexPropertyAccessor+IndexGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.MapAccessor+MapGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.NoopAccessor+NoopGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+XmlGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+AttributeGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementAttributeGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementGetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllGettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+TextGetter)" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="ParameterizedTest" name="AllSettersAreMarkedAsSerializable" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.BackrefPropertyAccessor+BackrefSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.BasicPropertyAccessor+BasicSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.FieldAccessor+FieldSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.IndexPropertyAccessor+IndexSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.MapAccessor+MapSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.NoopAccessor+NoopSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.ReadOnlyAccessor+NoopSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+XmlSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+AttributeSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementAttributeSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+ElementSetter)" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.AccessorsSerializableTest.AllSettersAreMarkedAsSerializable(NHibernate.Properties.XmlAccessor+TextSetter)" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationAddMappingEvents" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationAddMappingEvents.WhenSubscribedToAfterBindThenRaiseEventForEachMapping" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationAddMappingEvents.WhenSubscribedToBeforeBindThenRaiseEventForEachMapping" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationFixture" executed="True" result="Failure" success="False" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.AddDocument" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfiguration() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 217 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfigurationForUnmappedClass" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.CacheConfigurationForUnmappedCollection" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.DisabledProxyValidator() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 355 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.EmptyPropertyTag" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.InvalidXmlInCfgFile" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.InvalidXmlInHbmFile" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NH1334" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NH1348" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.NoSessionFactoriesInConfiguration" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.PersisterWithDefaultNamespaceAndAssembly" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyValidator" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.ProxyWithDefaultNamespaceAndAssembly() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 270 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ReadCfgXmlFromAssembly" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.ReadCfgXmlFromDefaultFile" executed="True" result="Success" success="True" asserts="6" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace" executed="True" result="Error" success="False" asserts="0"> + <failure> + <message><![CDATA[NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.FirebirdClientDriver. + ----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. + ----> System.ArgumentException : Unable to find the requested .Net Framework Data Provider. It may not be installed.]]></message> + <stack-trace><![CDATA[at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 113 +at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 64 +at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50 +at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\SettingsFactory.cs:line 83 +at NHibernate.Cfg.Configuration.BuildSettings() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1689 +at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1241 +at NHibernate.Test.CfgTest.ConfigurationFixture.SetDefaultAssemblyAndNamespace() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate.Test\CfgTest\ConfigurationFixture.cs:line 396 +--TargetInvocationException +at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +at System.Activator.CreateInstance(Type type, Boolean nonPublic) +at System.Activator.CreateInstance(Type type) +at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9 +at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Connection\ConnectionProvider.cs:line 107 +--ArgumentException +at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +at NHibernate.Driver.ReflectionBasedDriver..ctor(String providerInvariantName, String driverAssemblyName, String connectionTypeName, String commandTypeName) in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 49 +at NHibernate.Driver.FirebirdClientDriver..ctor() in c:\work\oss\NhTrunk\nhibernate\src\NHibernate\Driver\FirebirdClientDriver.cs:line 15 +]]></stack-trace> + </failure> + </test-case> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationSchemaFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.ClassesCache" executed="True" result="Success" success="True" asserts="5" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.CollectionsCache" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.EmptyFactoryNotAllowed" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Events" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.FactoryName" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.FromAppConfigTest" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.IgnoreSystemOutOfAppConfig" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.InvalidConfig" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Listeners" executed="True" result="Success" success="True" asserts="3" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.MappingEquatable" executed="True" result="Success" success="True" asserts="7" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Mappings" executed="True" result="Success" success="True" asserts="5" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.NotAllowedMappings" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSchemaFixture.Properties" executed="True" result="Success" success="True" asserts="5" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="ConfigurationSerializationTests" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSerializationTests.Basic_CRUD_should_work" executed="True" result="Success" success="True" asserts="8" /> + <test-case name="NHibernate.Test.CfgTest.ConfigurationSerializationTests.Configuration_should_be_serializable" executed="True" result="Success" success="True" asserts="1" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="CustomBytecodeProviderTest" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenInvalidThenThrow" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenNoDefaultCtorThenThrow" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenNoShortCutUsedThenCanBuildBytecodeProvider" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.CustomBytecodeProviderTest.WhenNoShortCutUsedThenCanBuildInstanceOfConfiguredBytecodeProvider" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="DefaultNsAssmFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.BottomUpJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.MixedJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.MixedSubclass" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.DefaultNsAssmFixture.TopDownJoined" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="EntityCacheUsageParserFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.EntityCacheUsageParserFixture.CovertToString" executed="True" result="Success" success="True" asserts="4" /> + <test-case name="NHibernate.Test.CfgTest.EntityCacheUsageParserFixture.Parse" executed="True" result="Success" success="True" asserts="4" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="HbmOrderingFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.BottomUpJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.MixedJoined" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.MixedSubclass" executed="True" result="Success" success="True" asserts="0" /> + <test-case name="NHibernate.Test.CfgTest.HbmOrderingFixture.TopDownJoined" executed="True" result="Success" success="True" asserts="0" /> + </results> + </test-suite> + <test-suite type="Namespace" name="Loquacious" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-suite type="TestFixture" name="ConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.ConfigurationFixture.CompleteConfiguration" executed="True" result="Success" success="True" asserts="28" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.ConfigurationFixture.UseConnectionStringName" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.ConfigurationFixture.UseDbConfigurationStringBuilder" executed="True" result="Success" success="True" asserts="3" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="EntityCacheConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.ConfigureCacheOfClass" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.ConfigureCacheOfCollection" executed="True" result="Success" success="True" asserts="2" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.ConfigureCacheOfCollectionWithOutEntity" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.Loquacious.EntityCacheConfigurationFixture.NotAllowRelatedCollections" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="LambdaConfigurationFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.LambdaConfigurationFixture.FullConfiguration" executed="True" result="Success" success="True" asserts="28" /> + </results> + </test-suite> + <test-suite type="TestFixture" name="TypeDefinitionFixture" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.Loquacious.TypeDefinitionFixture.AddTypeDef" executed="True" result="Success" success="True" asserts="2" /> + </results> + </test-suite> + </results> + </test-suite> + <test-suite type="TestFixture" name="MappingDocumentAggregatorTests" executed="True" result="Success" success="True" asserts="0"> + <results> + <test-case name="NHibernate.Test.CfgTest.MappingDocumentAggregatorTests.CanAddDomainModelAssembly" executed="True" result="Success" success="True" asserts="1" /> + <test-case name="NHibernate.Test.CfgTest.MappingDocumentAggregato... [truncated message content] |
From: <pa...@us...> - 2011-02-20 05:11:28
|
Revision: 5386 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5386&view=rev Author: patearl Date: 2011-02-20 05:11:20 +0000 (Sun, 20 Feb 2011) Log Message: ----------- Upgraded ReLinq from 1.13.88 to 1.13.93, making required changes. Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb trunk/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs Removed Paths: ------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml trunk/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs trunk/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Deleted: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-19 14:02:21 UTC (rev 5385) +++ trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-20 05:11:20 UTC (rev 5386) @@ -1,1253 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><doc><assembly> - <name>Remotion.Data.Linq</name> - </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> - Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into - an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the - result set. - </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> - Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by - first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this - constructor to specify a specific set of parsers to use when analyzing the query. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> - parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This - method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is - called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> - Executes the query defined by the specified expression by parsing it with a - <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. - This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as - <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and - <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> - The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> - Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> - Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> - trees. - </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that - represents the query defined by <paramref name="expression" /> and is able to enumerate its results. - </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> - Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> - (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. - </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> - Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface - and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. - </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. - The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> - Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type - <typeparamref name="T" />. - The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; - if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. - The query does not end with a scalar result operator, but it can end with a single result operator, for example - <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly - one object (or none if the last result operator allows empty result sets). - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> - Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> - Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable - class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to - execute the query. This is then used as an entry point (the main data source) of a LINQ query. - </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given - <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by - this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor - should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and - <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the - <see cref="T:System.Linq.Queryable" /> class) is called. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> - Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> - Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the - query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> - Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> - Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. - </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> - Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based - on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct - a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> - </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items - that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of - the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the - <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> - Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with - the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> - Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> - Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> - Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> - that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, - this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. - </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> - Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added - in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses - than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not - for uniquely identifying clauses. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> - Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls - <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> - Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses - whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> - Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by - the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> - Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the - items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> - modify the result of the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> - Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, - filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise - processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> - Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, - filtering, or otherwise processing the result before it is returned. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> - Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then - create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, - then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> - Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default - implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> - and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the - <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. - </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> - Generates unique identifiers based on a set of known identifiers. - An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier - exists which equals the prefix/number combination. - </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> - Adds the given <paramref name="identifier" /> to the set of known identifiers. - </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> - Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the - prefix so that the resulting string does not match a known identifier. - </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> - TODO: add summary - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> - Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to - a tree of standard expressions with equivalent semantics. - </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> - Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. - </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> - Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> - is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> - Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when - <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. - Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. - </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all - children of this extension node. - </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> - Gets a value indicating whether this instance can be reduced to a tree of standard expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> - This interface should be implemented by visitors that handle VB-specific expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> - Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always - point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be - thrown at runtime. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> - Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by - comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. - </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> - Gets the query source referenced by this expression. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> - Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> - Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. - To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> - or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. - </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> - Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a - strongly typed fashion. - This is the base class of many transformation classes. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a - complex <paramref name="fullExpression" />. - </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> - Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, - as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped - to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> - to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. - This is used whenever references to query sources should be replaced by a transformation. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given - <paramref name="querySourceMapping" />. - </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, - the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> - instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. - </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> - Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. - It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done - to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions - will not work. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input - parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolveLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Int32)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation on a <see cref="T:System.Linq.Expressions.LambdaExpression" />, i.e. creates a new - <see cref="T:System.Linq.Expressions.LambdaExpression" /> with an additional parameter from a given resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the new input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its new - input parameter.</param><param name="resolvedExpression">The resolved <see cref="T:System.Linq.Expressions.LambdaExpression" /> for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param><param name="parameterInsertionPosition">The position at which to insert the new parameter.</param></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator"><summary> - Represents aggregating the items returned by a query into a single value with an initial seeding value. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase"><summary> - Represents a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> that is executed on a sequence, returning a scalar value or single item as its result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperatorBase"><summary> - Represents an operation that is executed on the result set of the query, aggregating, filtering, or restricting the number of result items - before the query result is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)"><summary> - Executes this result operator in memory, on a given input. Executing result operators in memory should only be - performed if the target query system does not support the operator. - </summary><param name="input">The input for the result operator. This must match the type of <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> expected by the operator.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"><summary> - Gets information about the data streamed out of this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />. This contains the result type a query would have if - it ended with this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, and it optionally includes an <see cref="P:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ItemExpression" /> describing - the streamed sequence's items. - </summary><param name="inputInfo">Information about the data produced by the preceding <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, or the <see cref="T:Remotion.Data.Linq.Clauses.SelectClause" /> - of the query if no previous <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> exists.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Clone(Remotion.Data.Linq.Clauses.CloneContext)"><summary> - Clones this item, registering its clone with the <paramref name="cloneContext" /> if it is a query source clause. - </summary><param name="cloneContext">The clones of all query source clauses are registered with this <see cref="T:Remotion.Data.Linq.Clauses.CloneContext" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,System.Int32)"><summary> - Accepts the specified visitor by calling its <see cref="M:Remotion.Data.Linq.IQueryModelVisitor.VisitResultOperator(Remotion.Data.Linq.Clauses.ResultOperatorBase,Remotion.Data.Linq.QueryModel,System.Int32)" /> method. - </summary><param name="visitor">The visitor to accept.</param><param name="queryModel">The query model in whose context this clause is visited.</param><param name="index">The index of this item in the <paramref name="queryModel" />'s <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> collection.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this item via the given <paramref name="transformation" /> delegate. Subclasses must apply the - <paramref name="transformation" /> to any expressions they hold. If a subclass does not hold any expressions, it shouldn't do anything - in the implementation of this method. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - item, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})"><summary> - Invokes a given generic method on an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> input via Reflection. Use this to implement - <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" /> by defining a strongly typed, generic variant - of <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" />; then invoke that strongly typed - variant via <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})" />. - </summary><param name="input">The input <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> object to invoke the method on..</param><param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is - called via Reflection on the given <paramref name="input" /> argument.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeExecuteMethod(System.Reflection.MethodInfo,System.Object)"><summary> - Invokes the given <paramref name="method" /> via reflection on the given <paramref name="input" />. - </summary><param name="input">The input to invoke the method with.</param><param name="method">The method to be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.CheckSequenceItemType(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo,System.Type)"><summary> - Checks the type of the items retrieved by the sequence, throwing an <see cref="T:Remotion.Data.Linq.Utilities.ArgumentTypeException" /> if the items don't match the - expected type. - </summary><param name="sequenceInfo">The <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo" /> object describing the sequence.</param><param name="expectedItemType">The expected item type.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetConstantValueFromExpression``1(System.String,System.Linq.Expressions.Expression)"><summary> - Gets the constant value of the given expression, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary><param name="expressionName">A string describing the value; this will be included in the exception message if an exception is thrown.</param><param name="expression">The expression whose value to get.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.#ctor(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator" /> class. - </summary><param name="seed">The seed expression.</param><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param><param name="optionalResultSelector">The result selector, can be <see langword="null" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetConstantSeed``1"><summary> - Gets the constant value of the <see cref="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed" /> property, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteAggregateInMemory``3(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"><summary> - Executes the aggregating operation in memory. - </summary><param name="input">The input sequence.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed"><summary> - Gets or sets the seed of the accumulation. This is an <see cref="T:System.Linq.Expressions.Expression" /> denoting the starting value of the aggregation. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.OptionalResultSelector"><summary> - Gets or sets the result selector. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> applied after the aggregation to select the final value. - Can be <see langword="null" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator"><summary> - Represents aggregating the items returned by a query into a single value. The first item is used as the seeding value for the aggregating - function. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.#ctor(System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator" /> class. - </summary><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator"><summary> - Represents a check whether all items returned by a query satisfy a predicate. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.#ctor(System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator" /> class. - </summary><param name="predicate">The predicate to evaluate. This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Predicate"><summary> - Gets or sets the predicate to evaluate on all items in the sequence. - This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AnyResultOper... [truncated message content] |
From: <fab...@us...> - 2011-02-19 14:02:27
|
Revision: 5385 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5385&view=rev Author: fabiomaulo Date: 2011-02-19 14:02:21 +0000 (Sat, 19 Feb 2011) Log Message: ----------- Ups! NH-2455 (thanks to TeamCity) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.ByteCode.Spring/ProxyFactoryFactory.cs Modified: trunk/nhibernate/src/NHibernate.ByteCode.Spring/ProxyFactoryFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate.ByteCode.Spring/ProxyFactoryFactory.cs 2011-02-19 13:54:53 UTC (rev 5384) +++ trunk/nhibernate/src/NHibernate.ByteCode.Spring/ProxyFactoryFactory.cs 2011-02-19 14:02:21 UTC (rev 5385) @@ -27,6 +27,11 @@ return false; } + public bool IsProxy(object entity) + { + return entity is INHibernateProxy; + } + #endregion } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-02-19 13:55:00
|
Revision: 5384 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5384&view=rev Author: fabiomaulo Date: 2011-02-19 13:54:53 +0000 (Sat, 19 Feb 2011) Log Message: ----------- Apply patch of NH-2455 (thanks Michael DELVA) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Bytecode/IProxyFactoryFactory.cs trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs trunk/nhibernate/src/NHibernate/NHibernateUtil.cs trunk/nhibernate/src/NHibernate/Proxy/NHibernateProxyHelper.cs trunk/nhibernate/src/NHibernate/Type/CollectionType.cs trunk/nhibernate/src/NHibernate/Type/EntityType.cs trunk/nhibernate/src/NHibernate.ByteCode.Castle/ProxyFactoryFactory.cs trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/ProxyInterface/CustomProxyFixture.cs trunk/nhibernate/src/NHibernate.ByteCode.LinFu/ProxyFactoryFactory.cs trunk/nhibernate/src/NHibernate.Test/Bytecode/WrongProxyFactoryFactory.cs Modified: trunk/nhibernate/src/NHibernate/Bytecode/IProxyFactoryFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Bytecode/IProxyFactoryFactory.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Bytecode/IProxyFactoryFactory.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -38,5 +38,7 @@ IProxyValidator ProxyValidator { get; } bool IsInstrumented(System.Type entityClass); + + bool IsProxy(object entity); } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Engine/CascadingAction.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -371,7 +371,7 @@ { string childEntityName = ((EntityType)type).GetAssociatedEntityName(session.Factory); - if (!IsInManagedState(child, session) && !(child is INHibernateProxy) && ForeignKeys.IsTransient(childEntityName, child, null, session)) + if (!IsInManagedState(child, session) && !(child.IsProxy()) && ForeignKeys.IsTransient(childEntityName, child, null, session)) { string parentEntiytName = persister.EntityName; string propertyName = persister.PropertyNames[propertyIndex]; Modified: trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -102,10 +102,11 @@ //if (obj == org.hibernate.intercept.LazyPropertyInitializer_Fields.UNFETCHED_PROPERTY) // return false; //this is kinda the best we can do... - INHibernateProxy proxy = obj as INHibernateProxy; - if (proxy != null) + if (obj.IsProxy()) { - // if its an uninitialized proxy it can't be transient + INHibernateProxy proxy = obj as INHibernateProxy; + + // if its an uninitialized proxy it can't be transient ILazyInitializer li = proxy.HibernateLazyInitializer; if (li.GetImplementation(session) == null) { @@ -156,7 +157,7 @@ /// </remarks> public static bool IsNotTransient(string entityName, System.Object entity, bool? assumed, ISessionImplementor session) { - if (entity is INHibernateProxy) + if (entity.IsProxy()) return true; if (session.PersistenceContext.IsEntryFor(entity)) return true; Modified: trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -572,10 +572,11 @@ //{ // value = wrapper.Element; //} - var proxy = value as INHibernateProxy; - if (proxy != null) + if (value.IsProxy()) { - if (log.IsDebugEnabled) + var proxy = value as INHibernateProxy; + + if (log.IsDebugEnabled) { log.Debug("setting proxy identifier: " + id); } @@ -619,10 +620,11 @@ // maybeProxy = wrapper.Element; //} - INHibernateProxy proxy = maybeProxy as INHibernateProxy; - if (proxy != null) + if (maybeProxy.IsProxy()) { - ILazyInitializer li = proxy.HibernateLazyInitializer; + INHibernateProxy proxy = maybeProxy as INHibernateProxy; + + ILazyInitializer li = proxy.HibernateLazyInitializer; if (li.IsUninitialized) throw new PersistentObjectException("object was an uninitialized proxy for " + li.PersistentClass.FullName); @@ -647,10 +649,11 @@ //{ // maybeProxy = wrapper.Element; //} - var proxy = maybeProxy as INHibernateProxy; - if (proxy != null) + if (maybeProxy.IsProxy()) { - ILazyInitializer li = proxy.HibernateLazyInitializer; + var proxy = maybeProxy as INHibernateProxy; + + ILazyInitializer li = proxy.HibernateLazyInitializer; ReassociateProxy(li, proxy); return li.GetImplementation(); //initialize + unwrap the object } Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -24,7 +24,7 @@ object obj = @event.Entity; IPersistenceContext persistenceContext = source.PersistenceContext; - if (obj is INHibernateProxy) + if (obj.IsProxy()) { ILazyInitializer li = ((INHibernateProxy)obj).HibernateLazyInitializer; object id = li.Identifier; Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultMergeEventListener.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -90,7 +90,7 @@ if (original != null) { object entity; - if (original is INHibernateProxy) + if (original.IsProxy()) { ILazyInitializer li = ((INHibernateProxy)original).HibernateLazyInitializer; if (li.IsUninitialized) @@ -521,7 +521,7 @@ { object entityCopy = copyCache[entity]; - if (entityCopy is INHibernateProxy) + if (entityCopy.IsProxy()) entityCopy = ((INHibernateProxy)entityCopy).HibernateLazyInitializer.GetImplementation(); // NH-specific: Disregard entities that implement ILifecycle and manage their own state - they Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultPersistEventListener.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -38,7 +38,7 @@ object obj = @event.Entity; object entity; - if (obj is INHibernateProxy) + if (obj.IsProxy()) { ILazyInitializer li = ((INHibernateProxy)obj).HibernateLazyInitializer; if (li.IsUninitialized) Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -31,7 +31,7 @@ { //assign the requested id to the proxy, *before* //reassociating the proxy - if (obj is INHibernateProxy) + if (obj.IsProxy()) { ((INHibernateProxy)obj).HibernateLazyInitializer.Identifier = requestedId; } Modified: trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -432,10 +432,11 @@ { throw new ArgumentNullException("obj", "null object passed to GetCurrentLockMode"); } - var proxy = obj as INHibernateProxy; - if (proxy != null) + + if (obj.IsProxy()) { - obj = proxy.HibernateLazyInitializer.GetImplementation(this); + var proxy = obj as INHibernateProxy; + obj = proxy.HibernateLazyInitializer.GetImplementation(this); if (obj == null) { return LockMode.None; @@ -1040,10 +1041,10 @@ { using (new SessionIdLoggingContext(SessionId)) { - INHibernateProxy proxy = entity as INHibernateProxy; - if (proxy != null) + if (entity.IsProxy()) { - ILazyInitializer initializer = proxy.HibernateLazyInitializer; + INHibernateProxy proxy = entity as INHibernateProxy; + ILazyInitializer initializer = proxy.HibernateLazyInitializer; // it is possible for this method to be called during flush processing, // so make certain that we do not accidently initialize an uninitialized proxy @@ -1292,10 +1293,12 @@ using (new SessionIdLoggingContext(SessionId)) { CheckAndUpdateSessionStatus(); - var proxy = obj as INHibernateProxy; - if (proxy != null) + + if (obj.IsProxy()) { - if (!persistenceContext.ContainsProxy(proxy)) + var proxy = obj as INHibernateProxy; + + if (!persistenceContext.ContainsProxy(proxy)) { throw new TransientObjectException("proxy was not associated with the session"); } @@ -1517,10 +1520,12 @@ // Actually the case for proxies will probably work even with // the session closed, but do the check here anyway, so that // the behavior is uniform. - var proxy = obj as INHibernateProxy; - if (proxy != null) + + if (obj.IsProxy()) { - ILazyInitializer li = proxy.HibernateLazyInitializer; + var proxy = obj as INHibernateProxy; + + ILazyInitializer li = proxy.HibernateLazyInitializer; if (li.Session != this) { throw new TransientObjectException("The proxy was not associated with this session"); @@ -1547,10 +1552,11 @@ { using (new SessionIdLoggingContext(SessionId)) { - INHibernateProxy proxy = obj as INHibernateProxy; - if (proxy != null) + if (obj.IsProxy()) { - return proxy.HibernateLazyInitializer.Identifier; + INHibernateProxy proxy = obj as INHibernateProxy; + + return proxy.HibernateLazyInitializer.Identifier; } else { @@ -1942,10 +1948,12 @@ using (new SessionIdLoggingContext(SessionId)) { CheckAndUpdateSessionStatus(); - var proxy = obj as INHibernateProxy; - if (proxy != null) + + if (obj.IsProxy()) { - //do not use proxiesByKey, since not all + var proxy = obj as INHibernateProxy; + + //do not use proxiesByKey, since not all //proxies that point to this session's //instances are in that collection! ILazyInitializer li = proxy.HibernateLazyInitializer; Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -470,10 +470,10 @@ { using (new SessionIdLoggingContext(SessionId)) { - INHibernateProxy proxy = entity as INHibernateProxy; - if (proxy != null) + if (entity.IsProxy()) { - entity = proxy.HibernateLazyInitializer.GetImplementation(); + INHibernateProxy proxy = entity as INHibernateProxy; + entity = proxy.HibernateLazyInitializer.GetImplementation(); } return GuessEntityName(entity); } Modified: trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -114,10 +114,12 @@ { return InitializeField(fieldName, target); } - var nhproxy = value as INHibernateProxy; - if (nhproxy != null && unwrapProxyFieldNames != null && unwrapProxyFieldNames.Contains(fieldName)) + + if (value.IsProxy() && unwrapProxyFieldNames != null && unwrapProxyFieldNames.Contains(fieldName)) { - return InitializeOrGetAssociation(nhproxy, fieldName); + var nhproxy = value as INHibernateProxy; + + return InitializeOrGetAssociation(nhproxy, fieldName); } return InvokeImplementation; } Modified: trunk/nhibernate/src/NHibernate/NHibernateUtil.cs =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernateUtil.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/NHibernateUtil.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -365,7 +365,7 @@ { return; } - else if (proxy is INHibernateProxy) + else if (proxy.IsProxy()) { ((INHibernateProxy)proxy).HibernateLazyInitializer.Initialize(); } @@ -382,7 +382,7 @@ /// <returns>true if the argument is already initialized, or is not a proxy or collection</returns> public static bool IsInitialized(object proxy) { - if (proxy is INHibernateProxy) + if (proxy.IsProxy()) { return !((INHibernateProxy)proxy).HibernateLazyInitializer.IsUninitialized; } @@ -404,7 +404,7 @@ /// <returns>the true class of the instance</returns> public static System.Type GetClass(object proxy) { - if (proxy is INHibernateProxy) + if (proxy.IsProxy()) { return ((INHibernateProxy)proxy).HibernateLazyInitializer.GetImplementation().GetType(); } @@ -530,7 +530,7 @@ public static bool IsPropertyInitialized(object proxy, string propertyName) { object entity; - if (proxy is INHibernateProxy) + if (proxy.IsProxy()) { ILazyInitializer li = ((INHibernateProxy)proxy).HibernateLazyInitializer; if (li.IsUninitialized) Modified: trunk/nhibernate/src/NHibernate/Proxy/NHibernateProxyHelper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Proxy/NHibernateProxyHelper.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Proxy/NHibernateProxyHelper.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -1,3 +1,4 @@ +using NHibernate.Cfg; using NHibernate.Intercept; using NHibernate.Persister.Entity; @@ -8,9 +9,9 @@ /// objects that might be instances of Classes or the Proxied version of /// the Class. /// </summary> - public sealed class NHibernateProxyHelper + public static class NHibernateProxyHelper { - private NHibernateProxyHelper() + static NHibernateProxyHelper() { //can't instantiate } @@ -23,10 +24,11 @@ /// <returns>The Underlying Type for the object regardless of if it is a Proxy.</returns> public static System.Type GetClassWithoutInitializingProxy(object obj) { - INHibernateProxy proxy = obj as INHibernateProxy; - if (proxy != null) + if (obj.IsProxy()) { - return proxy.HibernateLazyInitializer.PersistentClass; + INHibernateProxy proxy = obj as INHibernateProxy; + + return proxy.HibernateLazyInitializer.PersistentClass; } else { @@ -45,10 +47,10 @@ /// </remarks> public static System.Type GuessClass(object entity) { - var proxy = entity as INHibernateProxy; - if (proxy != null) + if (entity.IsProxy()) { - ILazyInitializer li = proxy.HibernateLazyInitializer; + var proxy = entity as INHibernateProxy; + ILazyInitializer li = proxy.HibernateLazyInitializer; if (li.IsUninitialized) { return li.PersistentClass; @@ -63,5 +65,10 @@ } return entity.GetType(); } + + public static bool IsProxy(this object entity) + { + return Environment.BytecodeProvider.ProxyFactoryFactory.IsProxy(entity); + } } } Modified: trunk/nhibernate/src/NHibernate/Type/CollectionType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/CollectionType.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Type/CollectionType.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -583,10 +583,12 @@ { object element = elem; // worrying about proxies is perhaps a little bit of overkill here... - INHibernateProxy proxy = element as INHibernateProxy; - if (proxy != null) + + if (element.IsProxy()) { - ILazyInitializer li = proxy.HibernateLazyInitializer; + INHibernateProxy proxy = element as INHibernateProxy; + + ILazyInitializer li = proxy.HibernateLazyInitializer; if (!li.IsUninitialized) element = li.GetImplementation(); } Modified: trunk/nhibernate/src/NHibernate/Type/EntityType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/EntityType.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate/Type/EntityType.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -63,10 +63,11 @@ } object xid; - INHibernateProxy proxy = x as INHibernateProxy; - if (proxy!=null) + + if (x.IsProxy()) { - xid = proxy.HibernateLazyInitializer.Identifier; + INHibernateProxy proxy = x as INHibernateProxy; + xid = proxy.HibernateLazyInitializer.Identifier; } else { @@ -74,10 +75,11 @@ } object yid; - proxy = y as INHibernateProxy; - if (proxy != null) + + if (y.IsProxy()) { - yid = proxy.HibernateLazyInitializer.Identifier; + INHibernateProxy proxy = y as INHibernateProxy; + yid = proxy.HibernateLazyInitializer.Identifier; } else { @@ -139,11 +141,12 @@ /// <returns> The extracted identifier. </returns> private static object GetIdentifier(object obj, IEntityPersister persister, EntityMode entityMode) { - INHibernateProxy proxy = obj as INHibernateProxy; - if (proxy != null) + if (obj.IsProxy()) { - ILazyInitializer li = proxy.HibernateLazyInitializer; - return li.Identifier; + INHibernateProxy proxy = obj as INHibernateProxy; + ILazyInitializer li = proxy.HibernateLazyInitializer; + + return li.Identifier; } else { @@ -392,10 +395,10 @@ object proxyOrEntity = session.InternalLoad(GetAssociatedEntityName(), id, eager, IsNullable && !isProxyUnwrapEnabled); - INHibernateProxy proxy = proxyOrEntity as INHibernateProxy; - if (proxy!=null) + if (proxyOrEntity.IsProxy()) { - proxy.HibernateLazyInitializer.Unwrap = isProxyUnwrapEnabled; + INHibernateProxy proxy = proxyOrEntity as INHibernateProxy; + proxy.HibernateLazyInitializer.Unwrap = isProxyUnwrapEnabled; } return proxyOrEntity; @@ -488,10 +491,11 @@ } object id; - INHibernateProxy proxy = x as INHibernateProxy; - if (proxy!=null) + + if (x.IsProxy()) { - id = proxy.HibernateLazyInitializer.Identifier; + INHibernateProxy proxy = x as INHibernateProxy; + id = proxy.HibernateLazyInitializer.Identifier; } else { Modified: trunk/nhibernate/src/NHibernate.ByteCode.Castle/ProxyFactoryFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate.ByteCode.Castle/ProxyFactoryFactory.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate.ByteCode.Castle/ProxyFactoryFactory.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -23,6 +23,11 @@ return true; } - #endregion + public bool IsProxy(object entity) + { + return entity is INHibernateProxy; + } + + #endregion } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/ProxyInterface/CustomProxyFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/ProxyInterface/CustomProxyFixture.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/ProxyInterface/CustomProxyFixture.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -75,7 +75,12 @@ return false; } - #endregion + public bool IsProxy(object entity) + { + return entity is INHibernateProxy; + } + + #endregion } public class DataBindingProxyFactory : ProxyFactory Modified: trunk/nhibernate/src/NHibernate.ByteCode.LinFu/ProxyFactoryFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate.ByteCode.LinFu/ProxyFactoryFactory.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate.ByteCode.LinFu/ProxyFactoryFactory.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -24,6 +24,11 @@ return false; } + public bool IsProxy(object entity) + { + return entity is INHibernateProxy; + } + #endregion } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/Bytecode/WrongProxyFactoryFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Bytecode/WrongProxyFactoryFactory.cs 2011-02-18 06:26:18 UTC (rev 5383) +++ trunk/nhibernate/src/NHibernate.Test/Bytecode/WrongProxyFactoryFactory.cs 2011-02-19 13:54:53 UTC (rev 5384) @@ -28,6 +28,11 @@ return false; } + public bool IsProxy(object entity) + { + return entity is INHibernateProxy; + } + #endregion } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-02-18 06:26:26
|
Revision: 5383 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5383&view=rev Author: patearl Date: 2011-02-18 06:26:18 +0000 (Fri, 18 Feb 2011) Log Message: ----------- Reverted ReLinq upgrade until I can figure out what happened to test TearDowns. Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb trunk/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml trunk/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs trunk/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Copied: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml (from rev 5381, trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml) =================================================================== --- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml (rev 0) +++ trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-18 06:26:18 UTC (rev 5383) @@ -0,0 +1,1253 @@ +<?xml version="1.0" encoding="utf-8"?><doc><assembly> + <name>Remotion.Data.Linq</name> + </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> + Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> + unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into + an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the + result set. + </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> + Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by + first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. + Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. + </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> + Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> + Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this + constructor to specify a specific set of parsers to use when analyzing the query. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> + parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> + Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This + method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. + </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> + Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is + called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. + </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> + Executes the query defined by the specified expression by parsing it with a + <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. + This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as + <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and + <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> + when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. + </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> + The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> + Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> + Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> + trees. + </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> + Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that + represents the query defined by <paramref name="expression" /> and is able to enumerate its results. + </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> + Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> + (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. + </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> + Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface + and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. + </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> + Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. + The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. + </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an + <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> + Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type + <typeparamref name="T" />. + The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. + </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an + <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; + if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> + Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. + The query does not end with a scalar result operator, but it can end with a single result operator, for example + <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly + one object (or none if the last result operator allows empty result sets). + </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an + <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> + Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> + Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable + class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to + execute the query. This is then used as an entry point (the main data source) of a LINQ query. + </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given + <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by + this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor + should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. + </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct + queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and + <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by + <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the + <see cref="T:System.Linq.Queryable" /> class) is called. + </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct + queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> + Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. + </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> + Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the + query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> + Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a + <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> + Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. + </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> + Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based + on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct + a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> + Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> + </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items + that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of + the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the + <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> + Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with + the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has + <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> + Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> + Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> + Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> + Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being + clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause + in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned + <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> + Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being + clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause + in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned + <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. + </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of + <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> + that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, + this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. + </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> + Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. + </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this + <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> + Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added + in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses + than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not + for uniquely identifying clauses. + </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> + Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls + <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. + </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> + Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses + whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have + <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> + Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by + the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> + Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the + items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> + modify the result of the query. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> + Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, + filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise + processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. + </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> + Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, + filtering, or otherwise processing the result before it is returned. + </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> + Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then + create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, + then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. + </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> + Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default + implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> + and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the + <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. + </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> + Generates unique identifiers based on a set of known identifiers. + An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier + exists which equals the prefix/number combination. + </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> + Adds the given <paramref name="identifier" /> to the set of known identifiers. + </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> + Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the + prefix so that the resulting string does not match a known identifier. + </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> + TODO: add summary + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> + Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to + a tree of standard expressions with equivalent semantics. + </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> + Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. + </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> + Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> + is returned. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> + Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when + <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> + Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. + Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. + </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> + Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all + children of this extension node. + </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> + Gets a value indicating whether this instance can be reduced to a tree of standard expressions. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> + This interface should be implemented by visitors that handle VB-specific expressions. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> + Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always + point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be + thrown at runtime. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> + Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by + comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. + </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> + Gets the query source referenced by this expression. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> + Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> + Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. + To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> + Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> + or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. + </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> + Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a + strongly typed fashion. + This is the base class of many transformation classes. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> + Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a + complex <paramref name="fullExpression" />. + </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> + Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, + as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in + <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped + to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> + to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> + Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. + This is used whenever references to query sources should be replaced by a transformation. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> + Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given + <paramref name="querySourceMapping" />. + </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when + <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, + the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> + Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> + instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. + </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> + Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. + It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done + to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions + will not work. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> + Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, + substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> + Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, + substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. + </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input + parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolveLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Int32)"><summary> + Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation on a <see cref="T:System.Linq.Expressions.LambdaExpression" />, i.e. creates a new + <see cref="T:System.Linq.Expressions.LambdaExpression" /> with an additional parameter from a given resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />, + substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the new input parameter. + </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its new + input parameter.</param><param name="resolvedExpression">The resolved <see cref="T:System.Linq.Expressions.LambdaExpression" /> for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param><param name="parameterInsertionPosition">The position at which to insert the new parameter.</param></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator"><summary> + Represents aggregating the items returned by a query into a single value with an initial seeding value. + This is a result operator, operating on the whole result set of a query. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase"><summary> + Represents a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> that is executed on a sequence, returning a scalar value or single item as its result. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperatorBase"><summary> + Represents an operation that is executed on the result set of the query, aggregating, filtering, or restricting the number of result items + before the query result is returned. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)"><summary> + Executes this result operator in memory, on a given input. Executing result operators in memory should only be + performed if the target query system does not support the operator. + </summary><param name="input">The input for the result operator. This must match the type of <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> expected by the operator.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"><summary> + Gets information about the data streamed out of this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />. This contains the result type a query would have if + it ended with this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, and it optionally includes an <see cref="P:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ItemExpression" /> describing + the streamed sequence's items. + </summary><param name="inputInfo">Information about the data produced by the preceding <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, or the <see cref="T:Remotion.Data.Linq.Clauses.SelectClause" /> + of the query if no previous <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> exists.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Clone(Remotion.Data.Linq.Clauses.CloneContext)"><summary> + Clones this item, registering its clone with the <paramref name="cloneContext" /> if it is a query source clause. + </summary><param name="cloneContext">The clones of all query source clauses are registered with this <see cref="T:Remotion.Data.Linq.Clauses.CloneContext" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,System.Int32)"><summary> + Accepts the specified visitor by calling its <see cref="M:Remotion.Data.Linq.IQueryModelVisitor.VisitResultOperator(Remotion.Data.Linq.Clauses.ResultOperatorBase,Remotion.Data.Linq.QueryModel,System.Int32)" /> method. + </summary><param name="visitor">The visitor to accept.</param><param name="queryModel">The query model in whose context this clause is visited.</param><param name="index">The index of this item in the <paramref name="queryModel" />'s <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> collection.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> + Transforms all the expressions in this item via the given <paramref name="transformation" /> delegate. Subclasses must apply the + <paramref name="transformation" /> to any expressions they hold. If a subclass does not hold any expressions, it shouldn't do anything + in the implementation of this method. + </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this + item, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})"><summary> + Invokes a given generic method on an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> input via Reflection. Use this to implement + <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" /> by defining a strongly typed, generic variant + of <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" />; then invoke that strongly typed + variant via <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})" />. + </summary><param name="input">The input <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> object to invoke the method on..</param><param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is + called via Reflection on the given <paramref name="input" /> argument.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeExecuteMethod(System.Reflection.MethodInfo,System.Object)"><summary> + Invokes the given <paramref name="method" /> via reflection on the given <paramref name="input" />. + </summary><param name="input">The input to invoke the method with.</param><param name="method">The method to be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.CheckSequenceItemType(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo,System.Type)"><summary> + Checks the type of the items retrieved by the sequence, throwing an <see cref="T:Remotion.Data.Linq.Utilities.ArgumentTypeException" /> if the items don't match the + expected type. + </summary><param name="sequenceInfo">The <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo" /> object describing the sequence.</param><param name="expectedItemType">The expected item type.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetConstantValueFromExpression``1(System.String,System.Linq.Expressions.Expression)"><summary> + Gets the constant value of the given expression, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is + not, an <see cref="T:System.InvalidOperationException" /> is thrown. + </summary><param name="expressionName">A string describing the value; this will be included in the exception message if an exception is thrown.</param><param name="expression">The expression whose value to get.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.#ctor(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.LambdaExpression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator" /> class. + </summary><param name="seed">The seed expression.</param><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param><param name="optionalResultSelector">The result selector, can be <see langword="null" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetConstantSeed``1"><summary> + Gets the constant value of the <see cref="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed" /> property, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is + not, an <see cref="T:System.InvalidOperationException" /> is thrown. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteAggregateInMemory``3(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"><summary> + Executes the aggregating operation in memory. + </summary><param name="input">The input sequence.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Func"><summary> + Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. + </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed"><summary> + Gets or sets the seed of the accumulation. This is an <see cref="T:System.Linq.Expressions.Expression" /> denoting the starting value of the aggregation. + </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.OptionalResultSelector"><summary> + Gets or sets the result selector. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> applied after the aggregation to select the final value. + Can be <see langword="null" />. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator"><summary> + Represents aggregating the items returned by a query into a single value. The first item is used as the seeding value for the aggregating + function. + This is a result operator, operating on the whole result set of a query. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.#ctor(System.Linq.Expressions.LambdaExpression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator" /> class. + </summary><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Func"><summary> + Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so + far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators + are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. + </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator"><summary> + Represents a check whether all items returned by a query satisfy a predicate. + This is a result operator, operating on the whole result set of a query. + </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.#ctor(System.Linq.Expressions.Expression)"><summary> + Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator" /> class. + </summary><param name="predicate">The predicate to evaluate. This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be + passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Predicate"><summary> + Gets or sets the predicate to evaluate on all items in the sequence. + This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be + passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />. + </summary></... [truncated message content] |
From: <pa...@us...> - 2011-02-18 06:16:03
|
Revision: 5382 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5382&view=rev Author: patearl Date: 2011-02-18 06:15:54 +0000 (Fri, 18 Feb 2011) Log Message: ----------- Upgraded ReLinq from 1.13.88 to 1.13.93, making required changes. Modified Paths: -------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb trunk/nhibernate/src/NHibernate/Linq/NhRelinqQueryParser.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ExpressionKeyVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregate.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessAggregateFromSeed.cs Removed Paths: ------------- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml trunk/nhibernate/src/NHibernate/Linq/Expressions/AggregateExpressionNode.cs trunk/nhibernate/src/NHibernate/Linq/ResultOperators/AggregateResultOperator.cs Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.dll =================================================================== (Binary files differ) Modified: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.pdb =================================================================== (Binary files differ) Deleted: trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml =================================================================== --- trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-16 16:33:03 UTC (rev 5381) +++ trunk/nhibernate/lib/net/3.5/Remotion.Data.Linq.xml 2011-02-18 06:15:54 UTC (rev 5382) @@ -1,1253 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><doc><assembly> - <name>Remotion.Data.Linq</name> - </assembly><members><member name="T:Remotion.Data.Linq.DefaultQueryProvider"><summary> - Represents a default implementation of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> that is automatically used by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - unless a custom <see cref="T:System.Linq.IQueryProvider" /> is specified. The <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> executes queries by parsing them into - an instance of type <see cref="T:Remotion.Data.Linq.QueryModel" />, which is then passed to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to obtain the - result set. - </summary></member><member name="T:Remotion.Data.Linq.QueryProviderBase"><summary> - Provides a default implementation of <see cref="T:System.Linq.IQueryProvider" /> that executes queries (subclasses of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) by - first parsing them into a <see cref="T:Remotion.Data.Linq.QueryModel" /> and then passing that to a given implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - Usually, <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> should be used unless <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" /> must be manually implemented. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using the default <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.#ctor(Remotion.Data.Linq.IQueryExecutor,Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> using a custom <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" />. Use this - constructor to specify a specific set of parsers to use when analyzing the query. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries against a specific query backend.</param><param name="nodeTypeRegistry">The <see cref="T:Remotion.Data.Linq.Parsing.Structure.MethodCallExpressionNodeTypeRegistry" /> containing the <see cref="T:System.Linq.Expressions.MethodCallExpression" /> - parsers that should be used when parsing queries.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable" /> object that can evaluate the query represented by a specified expression tree. This - method delegates to <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Constructs an <see cref="T:System.Linq.IQueryable`1" /> object that can evaluate the query represented by a specified expression tree. This method is - called by the standard query operators defined by the <see cref="T:System.Linq.Queryable" /> class. - </summary><param name="expression">An expression tree that represents a LINQ query.</param></member><member name="M:Remotion.Data.Linq.QueryProviderBase.Execute``1(System.Linq.Expressions.Expression)"><summary> - Executes the query defined by the specified expression by parsing it with a - <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> and then running it through the <see cref="P:Remotion.Data.Linq.QueryProviderBase.Executor" />. - This method is invoked through the <see cref="T:System.Linq.IQueryProvider" /> interface by methods such as - <see cref="M:System.Linq.Queryable.First``1(System.Linq.IQueryable{``0})" /> and - <see cref="M:System.Linq.Queryable.Count``1(System.Linq.IQueryable{``0})" />, and it's also invoked by <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> - when the <see cref="T:System.Linq.IQueryable`1" /> is enumerated. - </summary></member><member name="M:Remotion.Data.Linq.QueryProviderBase.GenerateQueryModel(System.Linq.Expressions.Expression)"><summary> - The method generates a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary><param name="expression">The query as expression chain.</param></member><member name="P:Remotion.Data.Linq.QueryProviderBase.Executor"><summary> - Gets or sets the implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute queries created via <see cref="M:Remotion.Data.Linq.QueryProviderBase.CreateQuery``1(System.Linq.Expressions.Expression)" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser"><summary> - Gets the <see cref="P:Remotion.Data.Linq.QueryProviderBase.ExpressionTreeParser" /> used by this <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> to parse LINQ <see cref="T:System.Linq.Expressions.Expression" /> - trees. - </summary></member><member name="M:Remotion.Data.Linq.DefaultQueryProvider.CreateQuery``1(System.Linq.Expressions.Expression)"><summary> - Creates a new <see cref="T:System.Linq.IQueryable" /> (of type <see cref="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType" /> with <typeparamref name="T" /> as its generic argument) that - represents the query defined by <paramref name="expression" /> and is able to enumerate its results. - </summary><param name="expression">An expression representing the query for which a <see cref="T:System.Linq.IQueryable`1" /> should be created.</param></member><member name="P:Remotion.Data.Linq.DefaultQueryProvider.QueryableType"><summary> - Gets the type of queryable created by this provider. This is the generic type definition of an implementation of <see cref="T:System.Linq.IQueryable`1" /> - (usually a subclass of <see cref="T:Remotion.Data.Linq.QueryableBase`1" />) with exactly one type argument. - </summary></member><member name="T:Remotion.Data.Linq.IQueryExecutor"><summary> - Constitutes the bridge between re-linq and a concrete query provider implementation. Concrete providers implement this interface - and <see cref="T:Remotion.Data.Linq.QueryProviderBase" /> calls the respective method of the interface implementation when a query is to be executed. - </summary></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteScalar``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a scalar query, i.e. as a query returning a scalar value of type <typeparamref name="T" />. - The query ends with a scalar result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.CountResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SumResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteSingle``1(Remotion.Data.Linq.QueryModel,System.Boolean)"><summary> - Executes the given <paramref name="queryModel" /> as a single object query, i.e. as a query returning a single object of type - <typeparamref name="T" />. - The query ends with a single result operator, for example a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" /> or a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" />. - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param><param name="returnDefaultWhenEmpty">If <see langword="true" />, the executor must return a default value when its result set is empty; - if <see langword="false" />, it should throw an <see cref="T:System.InvalidOperationException" /> when its result set is empty.</param></member><member name="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)"><summary> - Executes the given <paramref name="queryModel" /> as a collection query, i.e. as a query returning objects of type <typeparamref name="T" />. - The query does not end with a scalar result operator, but it can end with a single result operator, for example - <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.SingleResultOperator" /> or <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.FirstResultOperator" />. In such a case, the returned enumerable must yield exactly - one object (or none if the last result operator allows empty result sets). - </summary><param name="queryModel">The <see cref="T:Remotion.Data.Linq.QueryModel" /> representing the query to be executed. Analyze this via an - <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" />.</param></member><member name="T:Remotion.Data.Linq.IQueryModelVisitor"><summary> - Defines an interface for visiting the clauses of a <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.QueryableBase`1"><summary> - Acts as a common base class for <see cref="T:System.Linq.IQueryable`1" /> implementations based on re-linq. In a specific LINQ provider, a custom queryable - class should be derived from <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> which supplies an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> that is used to - execute the query. This is then used as an entry point (the main data source) of a LINQ query. - </summary></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(Remotion.Data.Linq.IQueryExecutor)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> and the given - <paramref name="executor" />. This constructor should be used by subclasses to begin a new query. The <see cref="P:Remotion.Data.Linq.QueryableBase`1.Expression" /> generated by - this constructor is a <see cref="T:System.Linq.Expressions.ConstantExpression" /> pointing back to this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a specific <see cref="T:System.Linq.IQueryProvider" />. This constructor - should only be used to begin a query when <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> does not fit the requirements. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.#ctor(System.Linq.IQueryProvider,System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> class with a given <paramref name="provider" /> and - <paramref name="expression" />. A constructor with a matching signature must be exposed on subclasses because it is used by - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> to construct queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> when a query method (e.g. of the - <see cref="T:System.Linq.Queryable" /> class) is called. - </summary><param name="provider">The provider used to execute the query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" /> and to construct - queries around this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />.</param><param name="expression">The expression representing the query.</param></member><member name="M:Remotion.Data.Linq.QueryableBase`1.GetEnumerator"><summary> - Executes the query via the <see cref="P:Remotion.Data.Linq.QueryableBase`1.Provider" /> and returns an enumerator that iterates through the items returned by the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Expression"><summary> - Gets the expression tree that is associated with the instance of <see cref="T:System.Linq.IQueryable" />. This expression describes the - query represented by this <see cref="T:Remotion.Data.Linq.QueryableBase`1" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.Provider"><summary> - Gets the query provider that is associated with this data source. The provider is used to execute the query. By default, a - <see cref="T:Remotion.Data.Linq.DefaultQueryProvider" /> is used that parses the query and passes it on to an implementation of <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryableBase`1.ElementType"><summary> - Gets the type of the element(s) that are returned when the expression tree associated with this instance of <see cref="T:System.Linq.IQueryable" /> is executed. - </summary></member><member name="T:Remotion.Data.Linq.QueryModel"><summary> - Provides an abstraction of an expression tree created for a LINQ query. <see cref="T:Remotion.Data.Linq.QueryModel" /> instances are passed to LINQ providers based - on re-linq via <see cref="T:Remotion.Data.Linq.IQueryExecutor" />, but you can also use <see cref="T:Remotion.Data.Linq.Parsing.Structure.QueryParser" /> to parse an expression tree by hand or construct - a <see cref="T:Remotion.Data.Linq.QueryModel" /> manually via its constructor. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.#ctor(Remotion.Data.Linq.Clauses.MainFromClause,Remotion.Data.Linq.Clauses.SelectClause)"><summary> - Initializes a new instance of <see cref="T:Remotion.Data.Linq.QueryModel" /> - </summary><param name="mainFromClause">The <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" /> of the query. This is the starting point of the query, generating items - that are filtered and projected by the query.</param><param name="selectClause">The <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> of the query. This is the end point of - the query, it defines what is actually returned for each of the items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the - <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> modify the result of the query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetOutputDataInfo"><summary> - Gets an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo" /> object describing the data streaming out of this <see cref="T:Remotion.Data.Linq.QueryModel" />. If a query ends with - the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />, this corresponds to <see cref="M:Remotion.Data.Linq.Clauses.SelectClause.GetOutputDataInfo" />. If a query has - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />, the data is further modified by those operators. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.GetUniqueIdentfierGenerator"><summary> - Gets the <see cref="T:Remotion.Data.Linq.UniqueIdentifierGenerator" /> which is used by the <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Accept(Remotion.Data.Linq.IQueryModelVisitor)"><summary> - Accepts an implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> or <see cref="T:Remotion.Data.Linq.QueryModelVisitorBase" />, as defined by the Visitor pattern. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.ToString"><summary> - Returns a <see cref="T:System.String" /> representation of this <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Clone(Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Clones this <see cref="T:Remotion.Data.Linq.QueryModel" />, returning a new <see cref="T:Remotion.Data.Linq.QueryModel" /> equivalent to this instance, but with its clauses being - clones of this instance's clauses. Any <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned clauses that points back to another clause - in this <see cref="T:Remotion.Data.Linq.QueryModel" /> (including its subqueries) is adjusted to point to the respective clones in the cloned - <see cref="T:Remotion.Data.Linq.QueryModel" />. Any subquery nested in the <see cref="T:Remotion.Data.Linq.QueryModel" /> is also cloned. - </summary><param name="querySourceMapping">The <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" /> defining how to adjust instances of - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> in the cloned <see cref="T:Remotion.Data.Linq.QueryModel" />. If there is a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> - that points out of the <see cref="T:Remotion.Data.Linq.QueryModel" /> being cloned, specify its replacement via this parameter. At the end of the cloning process, - this object maps all the clauses in this original <see cref="T:Remotion.Data.Linq.QueryModel" /> to the clones created in the process. - </param></member><member name="M:Remotion.Data.Linq.QueryModel.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this <see cref="T:Remotion.Data.Linq.QueryModel" />'s clauses via the given <paramref name="transformation" /> delegate. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - <see cref="T:Remotion.Data.Linq.QueryModel" />, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.QueryModel.GetNewName(System.String)"><summary> - Returns a new name with the given prefix. The name is different from that of any <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" /> added - in the <see cref="T:Remotion.Data.Linq.QueryModel" />. Note that clause names that are changed after the clause is added as well as names of other clauses - than from clauses are not considered when determining "unique" names. Use names only for readability and debugging, not - for uniquely identifying clauses. - </summary></member><member name="M:Remotion.Data.Linq.QueryModel.Execute(Remotion.Data.Linq.IQueryExecutor)"><summary> - Executes this <see cref="T:Remotion.Data.Linq.QueryModel" /> via the given <see cref="T:Remotion.Data.Linq.IQueryExecutor" />. By default, this indirectly calls - <see cref="M:Remotion.Data.Linq.IQueryExecutor.ExecuteCollection``1(Remotion.Data.Linq.QueryModel)" />, but this can be modified by the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary><param name="executor">The <see cref="T:Remotion.Data.Linq.IQueryExecutor" /> to use for executing this query.</param></member><member name="M:Remotion.Data.Linq.QueryModel.IsIdentityQuery"><summary> - Determines whether this <see cref="T:Remotion.Data.Linq.QueryModel" /> represents an identity query. An identity query is a query without any body clauses - whose <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" /> selects exactly the items produced by its <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />. An identity query can have - <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.MainFromClause"><summary> - Gets or sets the query's <see cref="T:Remotion.Data.Linq.Clauses.MainFromClause" />. This is the starting point of the query, generating items that are processed by - the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" /> and projected or grouped by the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.SelectClause"><summary> - Gets or sets the query's select clause. This is the end point of the query, it defines what is actually returned for each of the - items coming from the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" /> and passing the <see cref="P:Remotion.Data.Linq.QueryModel.BodyClauses" />. After it, only the <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> - modify the result of the query. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.BodyClauses"><summary> - Gets a collection representing the query's body clauses. Body clauses take the items generated by the <see cref="P:Remotion.Data.Linq.QueryModel.MainFromClause" />, - filtering (<see cref="T:Remotion.Data.Linq.Clauses.WhereClause" />), ordering (<see cref="T:Remotion.Data.Linq.Clauses.OrderByClause" />), augmenting (<see cref="T:Remotion.Data.Linq.Clauses.AdditionalFromClause" />), or otherwise - processing them before they are passed to the <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. - </summary></member><member name="P:Remotion.Data.Linq.QueryModel.ResultOperators"><summary> - Gets the result operators attached to this <see cref="P:Remotion.Data.Linq.QueryModel.SelectClause" />. Result operators modify the query's result set, aggregating, - filtering, or otherwise processing the result before it is returned. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelBuilder"><summary> - Collects clauses and creates a <see cref="T:Remotion.Data.Linq.QueryModel" /> from them. This provides a simple way to first add all the clauses and then - create the <see cref="T:Remotion.Data.Linq.QueryModel" /> rather than the two-step approach (first <see cref="P:Remotion.Data.Linq.QueryModelBuilder.SelectClause" /> and <see cref="P:Remotion.Data.Linq.QueryModelBuilder.MainFromClause" />, - then the <see cref="T:Remotion.Data.Linq.Clauses.IBodyClause" />s) required by <see cref="T:Remotion.Data.Linq.QueryModel" />'s constructor. - </summary></member><member name="T:Remotion.Data.Linq.QueryModelVisitorBase"><summary> - Provides a default implementation of <see cref="T:Remotion.Data.Linq.IQueryModelVisitor" /> which automatically visits child items. That is, the default - implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitQueryModel(Remotion.Data.Linq.QueryModel)" /> automatically calls <c>Accept</c> on all clauses in the <see cref="T:Remotion.Data.Linq.QueryModel" /> - and the default implementation of <see cref="M:Remotion.Data.Linq.QueryModelVisitorBase.VisitOrderByClause(Remotion.Data.Linq.Clauses.OrderByClause,Remotion.Data.Linq.QueryModel,System.Int32)" /> automatically calls <see cref="M:Remotion.Data.Linq.Clauses.Ordering.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,Remotion.Data.Linq.Clauses.OrderByClause,System.Int32)" /> on the - <see cref="T:Remotion.Data.Linq.Clauses.Ordering" /> instances in its <see cref="P:Remotion.Data.Linq.Clauses.OrderByClause.Orderings" /> collection, and so on. - </summary></member><member name="T:Remotion.Data.Linq.UniqueIdentifierGenerator"><summary> - Generates unique identifiers based on a set of known identifiers. - An identifier is generated by appending a number to a given prefix. The identifier is considered unique when no known identifier - exists which equals the prefix/number combination. - </summary></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.AddKnownIdentifier(System.String)"><summary> - Adds the given <paramref name="identifier" /> to the set of known identifiers. - </summary><param name="identifier">The identifier to add.</param></member><member name="M:Remotion.Data.Linq.UniqueIdentifierGenerator.GetUniqueIdentifier(System.String)"><summary> - Gets a unique identifier starting with the given <paramref name="prefix" />. The identifier is generating by appending a number to the - prefix so that the resulting string does not match a known identifier. - </summary><param name="prefix">The prefix to use for the identifier.</param></member><member name="T:Remotion.Data.Linq.UnmappedItemException"><summary> - TODO: add summary - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression"><summary> - Acts as a base class for custom extension expressions, providing advanced visitor support. Also allows extension expressions to be reduced to - a tree of standard expressions with equivalent semantics. - </summary></member><member name="F:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ExtensionExpressionNodeType"><summary> - Defines a standard <see cref="T:System.Linq.Expressions.ExpressionType" /> value that is used by all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.#ctor(System.Type)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class. - </summary><param name="type">The type of the value represented by the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce"><summary> - Reduces this instance to a tree of standard expressions. If this instance cannot be reduced, the same <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> - is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.ReduceAndCheck"><summary> - Calls the <see cref="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Reduce" /> method and checks certain invariants before returning the result. This method can only be called when - <see cref="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce" /> returns <see langword="true" />. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.Accept(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Accepts the specified visitor, by default dispatching to <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExtensionExpression(Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression)" />. - Inheritors of the <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> class can override this method in order to dispatch to a specific Visit method. - </summary><param name="visitor">The visitor whose Visit method should be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.VisitChildren(Remotion.Data.Linq.Parsing.ExpressionTreeVisitor)"><summary> - Must be overridden by <see cref="T:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression" /> subclasses by calling <see cref="M:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor.VisitExpression(System.Linq.Expressions.Expression)" /> on all - children of this extension node. - </summary><param name="visitor">The visitor to visit the child nodes with.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.ExtensionExpression.CanReduce"><summary> - Gets a value indicating whether this instance can be reduced to a tree of standard expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor"><summary> - This interface should be implemented by visitors that handle VB-specific expressions. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression"><summary> - Represents an expression tree node that points to a query source represented by a <see cref="T:Remotion.Data.Linq.Clauses.FromClauseBase" />. These expressions should always - point back, to a clause defined prior to the clause holding a <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />. Otherwise, exceptions might be - thrown at runtime. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.Equals(System.Object)"><summary> - Determines whether the specified <see cref="T:System.Object" /> is equal to the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> by - comparing the <see cref="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource" /> properties for reference equality. - </summary><param name="obj">The <see cref="T:System.Object" /> to compare with the current <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" />.</param></member><member name="P:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression.ReferencedQuerySource"><summary> - Gets the query source referenced by this expression. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression"><summary> - Represents an <see cref="T:System.Linq.Expressions.Expression" /> that holds a subquery. The subquery is held by <see cref="P:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression.QueryModel" /> in its parsed form. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression"><summary> - Represents a VB-specific comparison expression. To explicitly support this expression type, implement <see cref="T:Remotion.Data.Linq.Clauses.Expressions.IVBSpecificExpressionVisitor" />. - To treat this expression as if it were an ordinary <see cref="T:System.Linq.Expressions.BinaryExpression" />, call its <see cref="M:Remotion.Data.Linq.Clauses.Expressions.VBStringComparisonExpression.Reduce" /> method and visit the result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple expression from a complex <see cref="T:System.Linq.Expressions.NewExpression" /> - or <see cref="T:System.Linq.Expressions.MemberInitExpression" />. - </summary></member><member name="T:Remotion.Data.Linq.Parsing.ExpressionTreeVisitor"><summary> - Provides a base class that can be used for visiting and optionally transforming each node of an <see cref="T:System.Linq.Expressions.Expression" /> tree in a - strongly typed fashion. - This is the base class of many transformation classes. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.AccessorFindingExpressionTreeVisitor.FindAccessorLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression)"><summary> - Constructs a <see cref="T:System.Linq.Expressions.LambdaExpression" /> that is able to extract a specific simple <paramref name="searchedExpression" /> from a - complex <paramref name="fullExpression" />. - </summary><param name="searchedExpression">The expression an accessor to which should be created.</param><param name="fullExpression">The full expression containing the <paramref name="searchedExpression" />.</param><param name="inputParameter">The input parameter to be used by the resulting lambda. Its type must match the type of <paramref name="fullExpression" />.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor"><summary> - Visits an <see cref="T:System.Linq.Expressions.Expression" /> tree, replacing all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances with references to cloned clauses, - as defined by a <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />. In addition, all <see cref="T:Remotion.Data.Linq.QueryModel" /> instances in - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression">SubQueryExpressions</see> are cloned, and their references also replaces. All referenced clauses must be mapped - to cloned clauses in the given <see cref="T:Remotion.Data.Linq.Clauses.QuerySourceMapping" />, otherwise an expression is thrown. This is used by <see cref="M:Remotion.Data.Linq.QueryModel.Clone" /> - to adjust references to the old <see cref="T:Remotion.Data.Linq.QueryModel" /> with references to the new <see cref="T:Remotion.Data.Linq.QueryModel" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given <see cref="P:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.QuerySourceMapping" />. - This is used whenever references to query sources should be replaced by a transformation. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReferenceReplacingExpressionTreeVisitor.ReplaceClauseReferences(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping,System.Boolean)"><summary> - Takes an expression and replaces all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances, as defined by a given - <paramref name="querySourceMapping" />. - </summary><param name="expression">The expression to be scanned for references.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param><param name="throwOnUnmappedReferences">If <see langword="true" />, the visitor will throw an exception when - <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> not mapped in the <paramref name="querySourceMapping" /> is encountered. If <see langword="false" />, - the visitor will ignore such expressions.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.CloningExpressionTreeVisitor.AdjustExpressionAfterCloning(System.Linq.Expressions.Expression,Remotion.Data.Linq.Clauses.QuerySourceMapping)"><summary> - Adjusts the given expression for cloning, that is replaces <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> and <see cref="T:Remotion.Data.Linq.Clauses.Expressions.SubQueryExpression" /> - instances. All referenced clauses must be mapped to clones in the given <paramref name="querySourceMapping" />, otherwise an exception is thrown. - </summary><param name="expression">The expression to be adjusted.</param><param name="querySourceMapping">The clause mapping to be used for replacing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> instances.</param></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.FormattingExpressionTreeVisitor"><summary> - Transforms an expression tree into a human-readable string, taking all the custom expression nodes into account. - It does so by replacing all instances of custom expression nodes by parameters that have the desired string as their names. This is done - to circumvent a limitation in the <see cref="T:System.Linq.Expressions.Expression" /> class, where overriding <see cref="M:System.Linq.Expressions.Expression.ToString" /> in custom expressions - will not work. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolve(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation, i.e. creates a <see cref="T:System.Linq.Expressions.LambdaExpression" /> from a given resolved expression, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the lambda's input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its input - parameter.</param><param name="resolvedExpression">The resolved expression for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ExpressionTreeVisitors.ReverseResolvingExpressionTreeVisitor.ReverseResolveLambda(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Int32)"><summary> - Performs a reverse <see cref="M:Remotion.Data.Linq.Parsing.Structure.IntermediateModel.IExpressionNode.Resolve(System.Linq.Expressions.ParameterExpression,System.Linq.Expressions.Expression,Remotion.Data.Linq.Parsing.Structure.IntermediateModel.ClauseGenerationContext)" /> operation on a <see cref="T:System.Linq.Expressions.LambdaExpression" />, i.e. creates a new - <see cref="T:System.Linq.Expressions.LambdaExpression" /> with an additional parameter from a given resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />, - substituting all <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> objects by getting the referenced objects from the new input parameter. - </summary><param name="itemExpression">The item expression representing the items passed to the generated <see cref="T:System.Linq.Expressions.LambdaExpression" /> via its new - input parameter.</param><param name="resolvedExpression">The resolved <see cref="T:System.Linq.Expressions.LambdaExpression" /> for which to generate a reverse resolved <see cref="T:System.Linq.Expressions.LambdaExpression" />.</param><param name="parameterInsertionPosition">The position at which to insert the new parameter.</param></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator"><summary> - Represents aggregating the items returned by a query into a single value with an initial seeding value. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase"><summary> - Represents a <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> that is executed on a sequence, returning a scalar value or single item as its result. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperatorBase"><summary> - Represents an operation that is executed on the result set of the query, aggregating, filtering, or restricting the number of result items - before the query result is returned. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)"><summary> - Executes this result operator in memory, on a given input. Executing result operators in memory should only be - performed if the target query system does not support the operator. - </summary><param name="input">The input for the result operator. This must match the type of <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> expected by the operator.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"><summary> - Gets information about the data streamed out of this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />. This contains the result type a query would have if - it ended with this <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, and it optionally includes an <see cref="P:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo.ItemExpression" /> describing - the streamed sequence's items. - </summary><param name="inputInfo">Information about the data produced by the preceding <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" />, or the <see cref="T:Remotion.Data.Linq.Clauses.SelectClause" /> - of the query if no previous <see cref="T:Remotion.Data.Linq.Clauses.ResultOperatorBase" /> exists.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Clone(Remotion.Data.Linq.Clauses.CloneContext)"><summary> - Clones this item, registering its clone with the <paramref name="cloneContext" /> if it is a query source clause. - </summary><param name="cloneContext">The clones of all query source clauses are registered with this <see cref="T:Remotion.Data.Linq.Clauses.CloneContext" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.Accept(Remotion.Data.Linq.IQueryModelVisitor,Remotion.Data.Linq.QueryModel,System.Int32)"><summary> - Accepts the specified visitor by calling its <see cref="M:Remotion.Data.Linq.IQueryModelVisitor.VisitResultOperator(Remotion.Data.Linq.Clauses.ResultOperatorBase,Remotion.Data.Linq.QueryModel,System.Int32)" /> method. - </summary><param name="visitor">The visitor to accept.</param><param name="queryModel">The query model in whose context this clause is visited.</param><param name="index">The index of this item in the <paramref name="queryModel" />'s <see cref="P:Remotion.Data.Linq.QueryModel.ResultOperators" /> collection.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"><summary> - Transforms all the expressions in this item via the given <paramref name="transformation" /> delegate. Subclasses must apply the - <paramref name="transformation" /> to any expressions they hold. If a subclass does not hold any expressions, it shouldn't do anything - in the implementation of this method. - </summary><param name="transformation">The transformation object. This delegate is called for each <see cref="T:System.Linq.Expressions.Expression" /> within this - item, and those expressions will be replaced with what the delegate returns.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})"><summary> - Invokes a given generic method on an <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> input via Reflection. Use this to implement - <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" /> by defining a strongly typed, generic variant - of <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.ExecuteInMemory(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData)" />; then invoke that strongly typed - variant via <see cref="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeGenericExecuteMethod``2(Remotion.Data.Linq.Clauses.StreamedData.IStreamedData,System.Func{``0,``1})" />. - </summary><param name="input">The input <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.IStreamedData" /> object to invoke the method on..</param><param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is - called via Reflection on the given <paramref name="input" /> argument.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.InvokeExecuteMethod(System.Reflection.MethodInfo,System.Object)"><summary> - Invokes the given <paramref name="method" /> via reflection on the given <paramref name="input" />. - </summary><param name="input">The input to invoke the method with.</param><param name="method">The method to be invoked.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.CheckSequenceItemType(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo,System.Type)"><summary> - Checks the type of the items retrieved by the sequence, throwing an <see cref="T:Remotion.Data.Linq.Utilities.ArgumentTypeException" /> if the items don't match the - expected type. - </summary><param name="sequenceInfo">The <see cref="T:Remotion.Data.Linq.Clauses.StreamedData.StreamedSequenceInfo" /> object describing the sequence.</param><param name="expectedItemType">The expected item type.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperatorBase.GetConstantValueFromExpression``1(System.String,System.Linq.Expressions.Expression)"><summary> - Gets the constant value of the given expression, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary><param name="expressionName">A string describing the value; this will be included in the exception message if an exception is thrown.</param><param name="expression">The expression whose value to get.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.#ctor(System.Linq.Expressions.Expression,System.Linq.Expressions.LambdaExpression,System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator" /> class. - </summary><param name="seed">The seed expression.</param><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param><param name="optionalResultSelector">The result selector, can be <see langword="null" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetConstantSeed``1"><summary> - Gets the constant value of the <see cref="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed" /> property, assuming it is a <see cref="T:System.Linq.Expressions.ConstantExpression" />. If it is - not, an <see cref="T:System.InvalidOperationException" /> is thrown. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ExecuteAggregateInMemory``3(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"><summary> - Executes the aggregating operation in memory. - </summary><param name="input">The input sequence.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.Seed"><summary> - Gets or sets the seed of the accumulation. This is an <see cref="T:System.Linq.Expressions.Expression" /> denoting the starting value of the aggregation. - </summary></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator.OptionalResultSelector"><summary> - Gets or sets the result selector. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> applied after the aggregation to select the final value. - Can be <see langword="null" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator"><summary> - Represents aggregating the items returned by a query into a single value. The first item is used as the seeding value for the aggregating - function. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.#ctor(System.Linq.Expressions.LambdaExpression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator" /> class. - </summary><param name="func">The aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AggregateResultOperator.Func"><summary> - Gets or sets the aggregating function. This is a <see cref="T:System.Linq.Expressions.LambdaExpression" /> taking a parameter that represents the value accumulated so - far and returns a new accumulated value. This is a resolved expression, i.e. items streaming in from prior clauses and result operators - are represented as expressions containing <see cref="T:Remotion.Data.Linq.Clauses.Expressions.QuerySourceReferenceExpression" /> nodes. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator"><summary> - Represents a check whether all items returned by a query satisfy a predicate. - This is a result operator, operating on the whole result set of a query. - </summary></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.#ctor(System.Linq.Expressions.Expression)"><summary> - Initializes a new instance of the <see cref="T:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator" /> class. - </summary><param name="predicate">The predicate to evaluate. This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />.</param></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ExecuteInMemory``1(Remotion.Data.Linq.Clauses.StreamedData.StreamedSequence)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Clone(Remotion.Data.Linq.Clauses.CloneContext)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.TransformExpressions(System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression})"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.GetOutputDataInfo(Remotion.Data.Linq.Clauses.StreamedData.IStreamedDataInfo)"></member><member name="M:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.ToString"></member><member name="P:Remotion.Data.Linq.Clauses.ResultOperators.AllResultOperator.Predicate"><summary> - Gets or sets the predicate to evaluate on all items in the sequence. - This is a resolved version of the body of the <see cref="T:System.Linq.Expressions.LambdaExpression" /> that would be - passed to <see cref="M:System.Linq.Queryable.All``1(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})" />. - </summary></member><member name="T:Remotion.Data.Linq.Clauses.ResultOperators.AnyResultOper... [truncated message content] |
From: <jul...@us...> - 2011-02-16 16:33:10
|
Revision: 5381 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5381&view=rev Author: julian-maughan Date: 2011-02-16 16:33:03 +0000 (Wed, 16 Feb 2011) Log Message: ----------- Added support for 'field.camelcase-m-underscore' field naming strategy (NH-2357) Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/basic_mapping.xml trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs Modified: trunk/nhibernate/doc/reference/modules/basic_mapping.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/doc/reference/modules/basic_mapping.xml 2011-02-16 16:33:03 UTC (rev 5381) @@ -1295,7 +1295,7 @@ <entry> <para> The <literal>name</literal> attribute is converted to camel case to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>fooBar</literal>. </para> </entry> </row> @@ -1305,18 +1305,28 @@ <para> The <literal>name</literal> attribute is converted to camel case and prefixed with an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>_foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>_fooBar</literal>. </para> - </entry> + </entry> </row> <row> + <entry><literal>camelcase-m-underscore</literal></entry> + <entry> + <para> + The <literal>name</literal> attribute is converted to camel case and prefixed with + the character <literal>m</literal> and an underscore to find the field. + <literal><property name="FooBar" ... ></literal> uses the field <literal>m_fooBar</literal>. + </para> + </entry> + </row> + <row> <entry><literal>lowercase</literal></entry> <entry> <para> The <literal>name</literal> attribute is converted to lower case to find the Field. <literal><property name="FooBar" ... ></literal> uses the field <literal>foobar</literal>. </para> - </entry> + </entry> </row> <row> <entry><literal>lowercase-underscore</literal></entry> @@ -1333,7 +1343,7 @@ <entry> <para> The <literal>name</literal> attribute is prefixed with an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>_Foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>_FooBar</literal>. </para> </entry> </row> @@ -1343,7 +1353,7 @@ <para> The <literal>name</literal> attribute is prefixed with the character <literal>m</literal> to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>mFoo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>mFooBar</literal>. </para> </entry> </row> @@ -1353,7 +1363,7 @@ <para> The <literal>name</literal> attribute is prefixed with the character <literal>m</literal> and an underscore to find the field. - <literal><property name="Foo" ... ></literal> uses the field <literal>m_Foo</literal>. + <literal><property name="FooBar" ... ></literal> uses the field <literal>m_FooBar</literal>. </para> </entry> </row> Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-02-16 16:33:03 UTC (rev 5381) @@ -307,6 +307,7 @@ <Compile Include="ObjectNotFoundException.cs" /> <Compile Include="PersistentObjectException.cs" /> <Compile Include="Persister\PersisterFactory.cs" /> + <Compile Include="Properties\CamelCaseMUnderscoreStrategy.cs" /> <Compile Include="PropertyAccessException.cs" /> <Compile Include="PropertyNotFoundException.cs" /> <Compile Include="PropertyValueException.cs" /> Added: trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Properties/CamelCaseMUnderscoreStrategy.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -0,0 +1,25 @@ +namespace NHibernate.Properties +{ + /// <summary> + /// Implementation of <see cref="IFieldNamingStrategy"/> for fields that are prefixed with + /// an <c>m_</c> and the PropertyName is changed to camelCase. + /// </summary> + public class CamelCaseMUnderscoreStrategy : IFieldNamingStrategy + { + #region IFieldNamingStrategy Members + + /// <summary> + /// Converts the Property's name into a Field name by making the first character + /// of the <c>propertyName</c> lowercase and prefixing it with the letter 'm' + /// and an underscore. + /// </summary> + /// <param name="propertyName">The name of the mapped property.</param> + /// <returns>The name of the Field in CamelCase format prefixed with an 'm' and an underscore.</returns> + public string GetFieldName(string propertyName) + { + return "m_" + propertyName.Substring(0, 1).ToLowerInvariant() + propertyName.Substring(1); + } + + #endregion + } +} Modified: trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate/Properties/PropertyAccessorFactory.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -26,6 +26,7 @@ accessors["readonly"] = new ReadOnlyAccessor(); accessors["field.camelcase"] = new FieldAccessor(new CamelCaseStrategy()); accessors["field.camelcase-underscore"] = new FieldAccessor(new CamelCaseUnderscoreStrategy()); + accessors["field.camelcase-m-underscore"] = new FieldAccessor(new CamelCaseMUnderscoreStrategy()); accessors["field.lowercase"] = new FieldAccessor(new LowerCaseStrategy()); accessors["field.lowercase-underscore"] = new FieldAccessor(new LowerCaseUnderscoreStrategy()); accessors["field.pascalcase-underscore"] = new FieldAccessor(new PascalCaseUnderscoreStrategy()); @@ -33,6 +34,7 @@ accessors["field.pascalcase-m"] = new FieldAccessor(new PascalCaseMStrategy()); accessors["nosetter.camelcase"] = new NoSetterAccessor(new CamelCaseStrategy()); accessors["nosetter.camelcase-underscore"] = new NoSetterAccessor(new CamelCaseUnderscoreStrategy()); + accessors["nosetter.camelcase-m-underscore"] = new NoSetterAccessor(new CamelCaseMUnderscoreStrategy()); accessors["nosetter.lowercase"] = new NoSetterAccessor(new LowerCaseStrategy()); accessors["nosetter.lowercase-underscore"] = new NoSetterAccessor(new LowerCaseUnderscoreStrategy()); accessors["nosetter.pascalcase-underscore"] = new NoSetterAccessor(new PascalCaseUnderscoreStrategy()); @@ -116,7 +118,7 @@ /// <term>camelcase</term> /// <description> /// The <c>name</c> attribute should be changed to CamelCase to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>fooBar</c>. /// </description> /// </item> /// <item> @@ -124,15 +126,23 @@ /// <description> /// The <c>name</c> attribute should be changed to CamelCase and prefixed with /// an underscore to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>_foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>_fooBar</c>. /// </description> /// </item> /// <item> + /// <term>camelcase-m-underscore</term> + /// <description> + /// The <c>name</c> attribute should be changed to CamelCase and prefixed with + /// an 'm' and underscore to find the field. + /// <c><property name="FooBar" ... ></c> finds a field <c>m_fooBar</c>. + /// </description> + /// </item> + /// <item> /// <term>pascalcase-underscore</term> /// <description> /// The <c>name</c> attribute should be prefixed with an underscore /// to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>_Foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>_FooBar</c>. /// </description> /// </item> /// <item> @@ -140,14 +150,14 @@ /// <description> /// The <c>name</c> attribute should be prefixed with an 'm' and underscore /// to find the field. - /// <c><property name="Foo" ... ></c> finds a field <c>m_Foo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>m_FooBar</c>. /// </description> /// </item> /// <item> /// <term>pascalcase-m</term> /// <description> /// The <c>name</c> attribute should be prefixed with an 'm'. - /// <c><property name="Foo" ... ></c> finds a field <c>mFoo</c>. + /// <c><property name="FooBar" ... ></c> finds a field <c>mFooBar</c>. /// </description> /// </item> /// <item> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-02-16 16:33:03 UTC (rev 5381) @@ -618,6 +618,8 @@ <Compile Include="NHSpecificTest\Properties\Model.cs" /> <Compile Include="PolymorphicGetAndLoad\Domain.cs" /> <Compile Include="PolymorphicGetAndLoad\PolymorphicGetAndLoadTest.cs" /> + <Compile Include="PropertyTest\FieldCamelCaseMUnderscoreFixture.cs" /> + <Compile Include="PropertyTest\NoSetterCamelCaseMUnderscoreFixture.cs" /> <Compile Include="TypesTest\CharClass.cs" /> <Compile Include="TypesTest\CharClassFixture.cs" /> <Compile Include="TypesTest\DateTimeClass.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldCamelCaseMUnderscoreFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -0,0 +1,20 @@ +using System; +using NHibernate.Properties; +using NUnit.Framework; + +namespace NHibernate.Test.PropertyTest +{ + [TestFixture] + public class FieldCamelCaseMUnderscoreFixture : FieldAccessorFixture + { + [SetUp] + public override void SetUp() + { + _accessor = PropertyAccessorFactory.GetPropertyAccessor("field.camelcase-m-underscore"); + _getter = _accessor.GetGetter(typeof(FieldClass), "CamelMUnderscore"); + _setter = _accessor.GetSetter(typeof(FieldClass), "CamelMUnderscore"); + _instance = new FieldClass(); + _instance.InitCamelCaseMUnderscore(0); + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldClass.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -14,6 +14,7 @@ private int _lowerunderscorefoo = 5; private int lowerfoo = 6; private int _PascalUnderscoreFoo = 7; + private int m_camelMUnderscore = 8; public bool CamelUnderscoreFooGetterCalled = false; public bool BlahGetterCalled = false; @@ -21,6 +22,7 @@ public bool LowerUnderscoreFooGetterCalled = false; public bool LowerFooGetterCalled = false; public bool PascalUnderscoreFooCalled = false; + public bool CamelMUnderscoreGetterCalled = false; public FieldClass() { @@ -60,7 +62,12 @@ { _lowerunderscorefoo = value; } - + + public void InitCamelCaseMUnderscore(int value) + { + m_camelMUnderscore = value; + } + public void Increment() { Id++; @@ -70,6 +77,7 @@ _lowerunderscorefoo++; _PascalUnderscoreFoo++; lowerfoo++; + m_camelMUnderscore++; } public int CamelUnderscoreFoo @@ -126,5 +134,14 @@ return _PascalUnderscoreFoo; } } + + public int CamelMUnderscore + { + get + { + CamelMUnderscoreGetterCalled = true; + return m_camelMUnderscore; + } + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/FieldGetterFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -65,7 +65,7 @@ Assert.IsNull(fieldGetter.PropertyName, "no Property Names for fields."); Assert.AreEqual(Int64.MaxValue, fieldGetter.Get(obj), "Get() for Int64"); } - + [Test] public void PascalCaseMUnderscoreNamingStrategy() { @@ -79,7 +79,21 @@ Assert.IsNull(fieldGetter.PropertyName, "no Property Names for fields."); Assert.AreEqual(new TimeSpan(DateTime.Parse("2001-01-01").Ticks), fieldGetter.Get(obj), "Get() for TimeSpan"); } + + [Test] + public void CamelCaseMUnderscoreNamingStrategy() + { + IGetter fieldGetter = + ReflectHelper.GetGetter(typeof(FieldGetterClass), "PropertyFive", "field.camelcase-m-underscore"); + Assert.IsNotNull(fieldGetter, "should have found getter"); + Assert.AreEqual(typeof(FieldAccessor.FieldGetter), fieldGetter.GetType(), "IGetter should be for a field."); + Assert.AreEqual(typeof(decimal), fieldGetter.ReturnType, "returns Decimal."); + Assert.IsNull(fieldGetter.Method, "no MethodInfo for fields."); + Assert.IsNull(fieldGetter.PropertyName, "no Property Names for fields."); + Assert.AreEqual(2.5m, fieldGetter.Get(obj), "Get() for Decimal"); + } + public class FieldGetterClass { #pragma warning disable 414 @@ -88,6 +102,7 @@ private bool _propertyTwo = true; private TimeSpan m_PropertyThree = new TimeSpan(DateTime.Parse("2001-01-01").Ticks); private long _propertyfour = Int64.MaxValue; + private decimal m_propertyFive = 2.5m; #pragma warning restore 414 } Modified: trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs 2011-02-11 16:07:38 UTC (rev 5380) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterAccessorFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -20,6 +20,7 @@ protected bool _expectedLowerUnderscoreFooGetterCalled = false; protected bool _expectedLowerFooGetterCalled = false; protected bool _expectedPascalUnderscoreFooGetterCalled = false; + protected bool _expectedCamelMUnderscoreGetterCalled = false; /// <summary> /// SetUp the local fields for the test cases. @@ -41,13 +42,11 @@ Assert.AreEqual(_expectedBlahGetterCalled, _instance.BlahGetterCalled, "pascalcase-m-underscore"); Assert.AreEqual(_expectedCamelBazGetterCalled, _instance.CamelBazGetterCalled, "camelcase"); - Assert.AreEqual(_expectedCamelUnderscoreFooGetterCalled, _instance.CamelUnderscoreFooGetterCalled, - "camelcase-underscore"); - Assert.AreEqual(_expectedLowerUnderscoreFooGetterCalled, _instance.LowerUnderscoreFooGetterCalled, - "lowercase-underscore"); + Assert.AreEqual(_expectedCamelUnderscoreFooGetterCalled, _instance.CamelUnderscoreFooGetterCalled, "camelcase-underscore"); + Assert.AreEqual(_expectedLowerUnderscoreFooGetterCalled, _instance.LowerUnderscoreFooGetterCalled, "lowercase-underscore"); Assert.AreEqual(_expectedLowerFooGetterCalled, _instance.LowerFooGetterCalled, "lowercase"); - Assert.AreEqual(_expectedPascalUnderscoreFooGetterCalled, _instance.PascalUnderscoreFooCalled, - "pascalcase-underscore"); + Assert.AreEqual(_expectedPascalUnderscoreFooGetterCalled, _instance.PascalUnderscoreFooCalled, "pascalcase-underscore"); + Assert.AreEqual(_expectedCamelMUnderscoreGetterCalled, _instance.CamelMUnderscoreGetterCalled, "camelcase-m-underscore"); } [Test] Added: trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/PropertyTest/NoSetterCamelCaseMUnderscoreFixture.cs 2011-02-16 16:33:03 UTC (rev 5381) @@ -0,0 +1,22 @@ +using System; +using NHibernate.Properties; +using NUnit.Framework; + +namespace NHibernate.Test.PropertyTest +{ + [TestFixture] + public class NoSetterCamelCaseMUnderscoreFixture : NoSetterAccessorFixture + { + [SetUp] + public override void SetUp() + { + _expectedCamelMUnderscoreGetterCalled = true; + + _accessor = PropertyAccessorFactory.GetPropertyAccessor("nosetter.camelcase-m-underscore"); + _getter = _accessor.GetGetter(typeof(FieldClass), "CamelMUnderscore"); + _setter = _accessor.GetSetter(typeof(FieldClass), "CamelMUnderscore"); + _instance = new FieldClass(); + _instance.InitCamelCaseMUnderscore(0); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-02-11 16:07:48
|
Revision: 5380 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5380&view=rev Author: julian-maughan Date: 2011-02-11 16:07:38 +0000 (Fri, 11 Feb 2011) Log Message: ----------- Port of Hibernate read-only entities feature, including tests (NH-908) Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/EntityEntry.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/TwoPhaseLoad.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/AbstractFlushingEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/AbstractReassociateEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/AbstractSaveEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultAutoFlushEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultEvictEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultFlushEntityEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultFlushEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultRefreshEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultReplicateEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultSaveOrUpdateEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Hql/Classic/QueryTranslator.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Hql/IQueryTranslator.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/ICriteria.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/IQuery.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/ISession.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/CriteriaImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/EnumerableImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/SessionImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Loader/Criteria/CriteriaQueryTranslator.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Loader/Loader.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/AbstractLazyInitializer.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate/Proxy/ILazyInitializer.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/Contract.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/ContractVariation.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/ContractVariation.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/AbstractEntityWithManyToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/AbstractEntityWithOneToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Contract.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/ContractVariation.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Info.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariation.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationOneToManyJoin.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationVersioned.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/ContractVariationVersionedOneToManyJoin.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseManyToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseOneToManyJoinTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/EntityWithInverseOneToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseManyToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyFailureExpectedTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyJoinFailureExpectedTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyJoinTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Inverse/VersionedEntityWithInverseOneToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariation.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationOneToManyJoin.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationUnidir.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationVersioned.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/ContractVariationVersionedOneToManyJoin.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseManyToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseManyToManyUnidirTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyJoinTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/EntityWithNonInverseOneToManyUnidirTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseManyToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseOneToManyJoinTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/NonInverse/VersionedEntityWithNonInverseOneToManyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Owner.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Party.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/EntityWithMutableCollection/Plan.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/ImmutableTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/Info.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/Party.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/Immutable/Plan.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/AbstractReadOnlyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Container.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Course.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/DataPoint.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/DataPoint.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Enrolment.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Enrolment.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Info.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Owner.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyCriteriaQueryTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyProxyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlySessionLazyNonLazyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlySessionTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyTest.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/ReadOnlyVersionedNodes.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/Student.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/StudentDto.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/TextHolder.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/TextHolder.hbm.xml branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/VersionedNode.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/ReadOnly/VersionedNode.hbm.xml Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/EntityEntry.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/EntityEntry.cs 2011-02-11 14:44:33 UTC (rev 5379) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/EntityEntry.cs 2011-02-11 16:07:38 UTC (rev 5380) @@ -14,6 +14,7 @@ { private LockMode lockMode; private Status status; + private Status? previousStatus; private readonly object id; private object[] loadedState; private object[] deletedState; @@ -21,10 +22,11 @@ private object version; [NonSerialized] - private IEntityPersister persister;// for convenience to save some lookups + private IEntityPersister persister; // for convenience to save some lookups private readonly EntityMode entityMode; private readonly string entityName; + private EntityKey cachedEntityKey; private readonly bool isBeingReplicated; private readonly bool loadedWithLazyPropertiesUnfetched; @@ -50,9 +52,11 @@ bool disableVersionIncrement, bool lazyPropertiesAreUnfetched) { this.status = status; - this.loadedState = loadedState; + this.previousStatus = null; + // only retain loaded state if the status is not Status.ReadOnly + if (status != Status.ReadOnly) { this.loadedState = loadedState; } + this.id = id; this.rowId = rowId; - this.id = id; this.existsInDatabase = existsInDatabase; this.version = version; this.lockMode = lockMode; @@ -74,7 +78,7 @@ } /// <summary> - /// Gets or sets the <see cref="Status"/> of this Entity with respect to its + /// Gets or sets the <see cref="Status"/> of this Entity with respect to its /// persistence in the database. /// </summary> /// <value>The <see cref="Status"/> of this Entity.</value> @@ -86,7 +90,11 @@ if (value == Status.ReadOnly) loadedState = null; //memory optimization - status = value; + if (this.status != value) + { + previousStatus = this.status; + this.status = value; + } } } @@ -94,7 +102,7 @@ /// Gets or sets the identifier of the Entity in the database. /// </summary> /// <value>The identifier of the Entity in the database if one has been assigned.</value> - /// <remarks>This might be <see langword="null" /> when the <see cref="EntityEntry.Status"/> is + /// <remarks>This might be <see langword="null" /> when the <see cref="EntityEntry.Status"/> is /// <see cref="Engine.Status.Saving"/> and the database generates the id.</remarks> public object Id { @@ -129,7 +137,7 @@ /// </summary> /// <value><see langword="true" /> if it is already in the database.</value> /// <remarks> - /// It can also be <see langword="true" /> if it does not exists in the database yet and the + /// It can also be <see langword="true" /> if it does not exists in the database yet and the /// <see cref="IEntityPersister.IsIdentifierAssignedByInsert"/> is <see langword="true" />. /// </remarks> public bool ExistsInDatabase @@ -179,15 +187,33 @@ { get { return loadedWithLazyPropertiesUnfetched; } } + + /// <summary> + /// Get the EntityKey based on this EntityEntry. + /// </summary> + public EntityKey EntityKey + { + get + { + if (cachedEntityKey == null) + { + if (id == null) + throw new InvalidOperationException("cannot generate an EntityKey when id is null."); + cachedEntityKey = new EntityKey(id, persister, entityMode); + } + return cachedEntityKey; + } + } + public object GetLoadedValue(string propertyName) { int propertyIndex = ((IUniqueKeyLoadable) persister).GetPropertyIndex(propertyName); return loadedState[propertyIndex]; } - /// <summary> - /// After actually inserting a row, record the fact that the instance exists on the + /// <summary> + /// After actually inserting a row, record the fact that the instance exists on the /// database (needed for identity-column key generation) /// </summary> public void PostInsert() @@ -213,12 +239,13 @@ FieldInterceptionHelper.ClearDirty(entity); } - /// <summary> + /// <summary> /// After actually deleting a row, record the fact that the instance no longer /// exists in the database /// </summary> public void PostDelete() { + previousStatus = status; status = Status.Gone; existsInDatabase = false; } @@ -230,7 +257,7 @@ LockMode = LockMode.Force; persister.SetPropertyValue(entity, Persister.VersionProperty, nextVersion, entityMode); } - + public bool IsNullifiable(bool earlyInsert, ISessionImplementor session) { return Status == Status.Saving || (earlyInsert ? !ExistsInDatabase : session.PersistenceContext.NullifiableEntityKeys.Contains(new EntityKey(Id, Persister, entityMode))); @@ -238,21 +265,42 @@ public bool RequiresDirtyCheck(object entity) { - bool isMutableInstance = status != Status.ReadOnly && persister.IsMutable; - return - isMutableInstance - && - (Persister.HasMutableProperties || !FieldInterceptionHelper.IsInstrumented(entity) - || FieldInterceptionHelper.ExtractFieldInterceptor(entity).IsDirty); + IsModifiableEntity() + && (Persister.HasMutableProperties || !FieldInterceptionHelper.IsInstrumented(entity) + || FieldInterceptionHelper.ExtractFieldInterceptor(entity).IsDirty); } + + /// <summary> + /// Can the entity be modified? + /// The entity is modifiable if all of the following are true: + /// - the entity class is mutable + /// - the entity is not read-only + /// - if the current status is Status.Deleted, then the entity was not read-only when it was deleted + /// </summary> + /// <returns>true, if the entity is modifiable; false, otherwise</returns> + public bool IsModifiableEntity() + { + return (status != Status.ReadOnly) && !(status == Status.Deleted && previousStatus == Status.ReadOnly) && Persister.IsMutable; + } + + public bool IsReadOnly + { + get + { + if (status != Status.Loaded && status != Status.ReadOnly) + { + throw new HibernateException("instance was not in a valid state"); + } + return status == Status.ReadOnly; + } + } public void SetReadOnly(bool readOnly, object entity) { - if (status != Status.Loaded && status != Status.ReadOnly) - { - throw new HibernateException("instance was not in a valid state"); - } + if (readOnly == IsReadOnly) + return; // simply return since the status is not being changed + if (readOnly) { Status = Status.ReadOnly; @@ -260,6 +308,9 @@ } else { + if (!persister.IsMutable) + throw new InvalidOperationException("Cannot make an immutable entity modifiable."); + Status = Status.Loaded; loadedState = Persister.GetPropertyValues(entity, entityMode); } Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs 2011-02-11 14:44:33 UTC (rev 5379) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/IPersistenceContext.cs 2011-02-11 16:07:38 UTC (rev 5380) @@ -9,25 +9,25 @@ namespace NHibernate.Engine { - /// <summary> - /// Holds the state of the persistence context, including the - /// first-level cache, entries, snapshots, proxies, etc. + /// <summary> + /// Holds the state of the persistence context, including the + /// first-level cache, entries, snapshots, proxies, etc. /// </summary> public interface IPersistenceContext { bool IsStateless { get;} - /// <summary> - /// Get the session to which this persistence context is bound. + /// <summary> + /// Get the session to which this persistence context is bound. /// </summary> ISessionImplementor Session { get;} - /// <summary> + /// <summary> /// Retrieve this persistence context's managed load context. /// </summary> LoadContexts LoadContexts { get;} - /// <summary> + /// <summary> /// Get the <tt>BatchFetchQueue</tt>, instantiating one if necessary. /// </summary> BatchFetchQueue BatchFetchQueue { get;} @@ -52,12 +52,47 @@ /// <summary>Is a flush cycle currently in process?</summary> /// <remarks>Called before and after the flushcycle</remarks> - bool Flushing { get;set;} + bool Flushing { get; set;} + + /// <summary> + /// Change the default for entities and proxies loaded into this persistence + /// context from modifiable to read-only mode, or from modifiable to read-only + /// mode. + /// </summary> + /// <remarks> + /// <para> + /// Read-only entities are not dirty-checked and snapshots of persistent + /// state are not maintained. Read-only entities can be modified, but + /// changes are not persisted. + /// </para> + /// <para> + /// When a proxy is initialized, the loaded entity will have the same + /// read-only/modifiable setting as the uninitialized + /// proxy has, regardless of the persistence context's current setting. + /// </para> + /// <para> + /// To change the read-only/modifiable setting for a particular entity + /// or proxy that is already in this session: + /// <see cref="SetReadOnly(object, bool)" /> + /// <see cref="ISession.SetReadOnly(object, bool)" /> + /// </para> + /// <para> + /// To determine the read-only/modifiable setting for a particular entity or proxy: + /// <see cref="IsReadOnly(object)" /> + /// <see cref="ISession.IsReadOnly(object)" /> + /// </para> + /// <para> + /// To override this session's read-only/modifiable setting for entities + /// and proxies loaded by an IQuery: + /// <see cref="IQuery.SetReadOnly(bool)" /> + /// </para> + /// </remarks> + bool DefaultReadOnly { get; set; } /// <summary> Add a collection which has no owner loaded</summary> void AddUnownedCollection(CollectionKey key, IPersistentCollection collection); - /// <summary> + /// <summary> /// Get and remove a collection whose owner is not yet loaded, /// when its owner is being loaded /// </summary> @@ -75,13 +110,13 @@ /// <summary> Called after transactions end</summary> void AfterTransactionCompletion(); - /// <summary> + /// <summary> /// Get the current state of the entity as known to the underlying - /// database, or null if there is no corresponding row + /// database, or null if there is no corresponding row /// </summary> object[] GetDatabaseSnapshot(object id, IEntityPersister persister); - /// <summary> + /// <summary> /// Retrieve the cached database snapshot for the requested entity key. /// </summary> /// <param name="key">The entity key for which to retrieve the cached snapshot </param> @@ -95,9 +130,9 @@ /// </remarks> object[] GetCachedDatabaseSnapshot(EntityKey key); - /// <summary> - /// Get the values of the natural id fields as known to the underlying - /// database, or null if the entity has no natural id or there is no + /// <summary> + /// Get the values of the natural id fields as known to the underlying + /// database, or null if the entity has no natural id or there is no /// corresponding row. /// </summary> object[] GetNaturalIdSnapshot(object id, IEntityPersister persister); @@ -105,7 +140,7 @@ /// <summary> Add a canonical mapping from entity key to entity instance</summary> void AddEntity(EntityKey key, object entity); - /// <summary> + /// <summary> /// Get the entity instance associated with the given <tt>EntityKey</tt> /// </summary> object GetEntity(EntityKey key); @@ -113,7 +148,7 @@ /// <summary> Is there an entity with the given key in the persistence context</summary> bool ContainsEntity(EntityKey key); - /// <summary> + /// <summary> /// Remove an entity from the session cache, also clear /// up other state associated with the entity, all except /// for the <tt>EntityEntry</tt> @@ -126,8 +161,8 @@ /// <summary> Add an entity to the cache by unique key</summary> void AddEntity(EntityUniqueKey euk, object entity); - /// <summary> - /// Retrieve the EntityEntry representation of the given entity. + /// <summary> + /// Retrieve the EntityEntry representation of the given entity. /// </summary> /// <param name="entity">The entity for which to locate the EntityEntry. </param> /// <returns> The EntityEntry for the given entity. </returns> @@ -147,8 +182,8 @@ LockMode lockMode, bool existsInDatabase, IEntityPersister persister, bool disableVersionIncrement, bool lazyPropertiesAreUnfetched); - /// <summary> - /// Generates an appropriate EntityEntry instance and adds it + /// <summary> + /// Generates an appropriate EntityEntry instance and adds it /// to the event source's internal caches. /// </summary> EntityEntry AddEntry(object entity, Status status, object[] loadedState, object rowId, object id, object version, @@ -161,34 +196,34 @@ /// <summary> Is the given proxy associated with this persistence context?</summary> bool ContainsProxy(INHibernateProxy proxy); - /// <summary> - /// Takes the given object and, if it represents a proxy, reassociates it with this event source. + /// <summary> + /// Takes the given object and, if it represents a proxy, reassociates it with this event source. /// </summary> /// <param name="value">The possible proxy to be reassociated. </param> /// <returns> Whether the passed value represented an actual proxy which got initialized. </returns> bool ReassociateIfUninitializedProxy(object value); - /// <summary> + /// <summary> /// If a deleted entity instance is re-saved, and it has a proxy, we need to - /// reset the identifier of the proxy + /// reset the identifier of the proxy /// </summary> void ReassociateProxy(object value, object id); - /// <summary> + /// <summary> /// Get the entity instance underlying the given proxy, throwing /// an exception if the proxy is uninitialized. If the given object /// is not a proxy, simply return the argument. /// </summary> object Unproxy(object maybeProxy); - /// <summary> - /// Possibly unproxy the given reference and reassociate it with the current session. + /// <summary> + /// Possibly unproxy the given reference and reassociate it with the current session. /// </summary> /// <param name="maybeProxy">The reference to be unproxied if it currently represents a proxy. </param> /// <returns> The unproxied instance. </returns> object UnproxyAndReassociate(object maybeProxy); - /// <summary> + /// <summary> /// Attempts to check whether the given key represents an entity already loaded within the /// current session. /// </summary> @@ -196,11 +231,11 @@ /// <param name="key">The entity key.</param> void CheckUniqueness(EntityKey key, object obj); - /// <summary> + /// <summary> /// If the existing proxy is insufficiently "narrow" (derived), instantiate a new proxy /// and overwrite the registration of the old one. This breaks == and occurs only for /// "class" proxies rather than "interface" proxies. Also init the proxy to point to - /// the given target implementation if necessary. + /// the given target implementation if necessary. /// </summary> /// <param name="proxy">The proxy instance to be narrowed. </param> /// <param name="persister">The persister for the proxied entity. </param> @@ -209,14 +244,14 @@ /// <returns> An appropriately narrowed instance. </returns> object NarrowProxy(INHibernateProxy proxy, IEntityPersister persister, EntityKey key, object obj); - /// <summary> + /// <summary> /// Return the existing proxy associated with the given <tt>EntityKey</tt>, or the /// third argument (the entity associated with the key) if no proxy exists. Init /// the proxy to the target implementation, if necessary. /// </summary> object ProxyFor(IEntityPersister persister, EntityKey key, object impl); - /// <summary> + /// <summary> /// Return the existing proxy associated with the given <tt>EntityKey</tt>, or the /// argument (the entity associated with the key) if no proxy exists. /// (slower than the form above) @@ -228,7 +263,7 @@ /// <summary> Get the entity that owned this persistent collection when it was loaded </summary> /// <param name="collection">The persistent collection </param> - /// <returns> + /// <returns> /// The owner if its entity ID is available from the collection's loaded key /// and the owner entity is in the persistence context; otherwise, returns null /// </returns> @@ -245,7 +280,7 @@ /// <summary> add a detached uninitialized collection</summary> void AddUninitializedDetachedCollection(ICollectionPersister persister, IPersistentCollection collection); - /// <summary> + /// <summary> /// Add a new collection (ie. a newly created one, just instantiated by the /// application, with no database state or snapshot) /// </summary> @@ -253,7 +288,7 @@ /// <param name="persister"></param> void AddNewCollection(ICollectionPersister persister, IPersistentCollection collection); - /// <summary> + /// <summary> /// add an (initialized) collection that was created by another session and passed /// into update() (ie. one with a snapshot and existing state on the database) /// </summary> @@ -265,12 +300,12 @@ /// <summary> Get the collection instance associated with the <tt>CollectionKey</tt></summary> IPersistentCollection GetCollection(CollectionKey collectionKey); - /// <summary> + /// <summary> /// Register a collection for non-lazy loading at the end of the two-phase load /// </summary> void AddNonLazyCollection(IPersistentCollection collection); - /// <summary> + /// <summary> /// Force initialization of all non-lazy collections encountered during /// the current two-phase load (actually, this is a no-op, unless this /// is the "outermost" load) @@ -281,12 +316,12 @@ IPersistentCollection GetCollectionHolder(object array); /// <summary> Register a <tt>PersistentCollection</tt> object for an array. - /// Associates a holder with an array - MUST be called after loading + /// Associates a holder with an array - MUST be called after loading /// array, since the array instance is not created until endLoad(). /// </summary> void AddCollectionHolder(IPersistentCollection holder); - /// <summary> + /// <summary> /// Remove the mapping of collection to holder during eviction of the owning entity /// </summary> IPersistentCollection RemoveCollectionHolder(object array); @@ -294,7 +329,7 @@ /// <summary> Get the snapshot of the pre-flush collection state</summary> object GetSnapshot(IPersistentCollection coll); - /// <summary> + /// <summary> /// Get the collection entry for a collection passed to filter, /// which might be a collection wrapper, an array, or an unwrapped /// collection. Return null if there is no entry. @@ -322,18 +357,18 @@ /// <summary> Call this after finishing a two-phase load</summary> void AfterLoad(); - /// <summary> + /// <summary> /// Search the persistence context for an owner for the child object, /// given a collection role /// </summary> object GetOwnerId(string entity, string property, object childObject, IDictionary mergeMap); - /// <summary> + /// <summary> /// Search the persistence context for an index of the child object, given a collection role /// </summary> object GetIndexInOwner(string entity, string property, object childObject, IDictionary mergeMap); - /// <summary> + /// <summary> /// Record the fact that the association belonging to the keyed entity is null. /// </summary> void AddNullProperty(EntityKey ownerKey, string propertyName); @@ -341,9 +376,56 @@ /// <summary> Is the association property belonging to the keyed entity null?</summary> bool IsPropertyNull(EntityKey ownerKey, string propertyName); - /// <summary> Set the object to read only and discard it's snapshot</summary> + /// <summary> + /// Set the entity or proxy to read only and discard it's snapshot. + /// Set an unmodified persistent object to read-only mode, or a read-only + /// object to modifiable mode. + /// </summary> + /// <remarks> + /// <para> + /// Read-only entities are not dirty-checked and snapshots of persistent + /// state are not maintained. Read-only entities can be modified, but + /// changes are not persisted. + /// </para> + /// <para> + /// When a proxy is initialized, the loaded entity will have the same + /// read-only/modifiable setting as the uninitialized + /// proxy has, regardless of the session's current setting. + /// </para> + /// <para> + /// If the entity or proxy already has the specified read-only/modifiable + /// setting, then this method does nothing. + /// </para> + /// <para> + /// To set the default read-only/modifiable setting used for + /// entities and proxies that are loaded into this persistence context: + /// <see cref="IPersistenceContext.DefaultReadOnly" /> + /// <see cref="ISession.DefaultReadOnly" /> + /// </para> + /// <para> + /// To override this persistence context's read-only/modifiable setting + /// for entities and proxies loaded by a Query: + /// <see cref="IQuery.SetReadOnly(bool)" /> + /// </para> + /// </remarks> + /// <param name="entity">An entity or INHibernateProxy</param> + /// <param name="readOnly">if <c>true</c>, the entity or proxy is made read-only; if <c>false</c>, the entity or proxy is made modifiable.</param> + /// <seealso cref="ISession.SetReadOnly(object, bool)" /> void SetReadOnly(object entity, bool readOnly); + /// <summary> + /// Is the entity or proxy read-only? + /// </summary> + /// <remarks> + /// To get the default read-only/modifiable setting used for + /// entities and proxies that are loaded into the session: + /// <see cref="ISession.DefaultReadOnly" /> + /// </remarks> + /// <returns> + /// <c>true</c>, the object is read-only; <c>false</c>, the object is modifiable. + /// </returns> + bool IsReadOnly(object entityOrProxy); + void ReplaceDelayedEntityIdentityInsertKeys(EntityKey oldKey, object generatedId); } } Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2011-02-11 14:44:33 UTC (rev 5379) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2011-02-11 16:07:38 UTC (rev 5380) @@ -15,7 +15,7 @@ namespace NHibernate.Engine { /// <summary> - /// Container for data that is used during the NHibernate query/load process. + /// Container for data that is used during the NHibernate query/load process. /// </summary> [Serializable] public sealed class QueryParameters @@ -39,6 +39,7 @@ private object _optionalObject; private string _optionalEntityName; private object _optionalId; + private bool _isReadOnlyInitialized; private string _comment; private bool _readOnly; private int? limitParameterIndex = null; @@ -46,18 +47,14 @@ private IDictionary<int, int> _adjustedParameterLocations; private IDictionary<int, int> _tempPagingParameterIndexes; private IDictionary<int, int> _pagingParameterIndexMap; - private SqlString processedSQL; - private readonly IResultTransformer _resultTransformer; - // not implemented: private ScrollMode _scrollMode; - + public QueryParameters() : this(ArrayHelper.EmptyTypeArray, ArrayHelper.EmptyObjectArray) {} public QueryParameters(IType type, object value) : this(new[] {type}, new[] {value}) {} - public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, object optionalObject, - string optionalEntityName, object optionalObjectId) + public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, object optionalObject, string optionalEntityName, object optionalObjectId) : this(positionalParameterTypes, postionalParameterValues) { _optionalObject = optionalObject; @@ -66,32 +63,22 @@ } public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues) - : this(positionalParameterTypes, postionalParameterValues, null, null, false, null, null, false, null, null) {} + : this(positionalParameterTypes, postionalParameterValues, null, null, false, false, false, null, null, false, null, null) {} public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, object[] collectionKeys) : this(positionalParameterTypes, postionalParameterValues, null, collectionKeys) {} - public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, - IDictionary<string, TypedValue> namedParameters, object[] collectionKeys) - : this( - positionalParameterTypes, postionalParameterValues, namedParameters, null, null, false, false, null, null, - collectionKeys, null) {} + public QueryParameters(IType[] positionalParameterTypes, object[] postionalParameterValues, IDictionary<string, TypedValue> namedParameters, object[] collectionKeys) + : this(positionalParameterTypes, postionalParameterValues, namedParameters, null, null, false, false, false, null, null, collectionKeys, null) {} - public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, - IDictionary<string, LockMode> lockModes, RowSelection rowSelection, bool cacheable, - string cacheRegion, string comment, bool isLookupByNaturalKey, IResultTransformer transformer, IDictionary<int,int> tempPagingParameterIndexes) - : this( - positionalParameterTypes, positionalParameterValues, null, lockModes, rowSelection, false, cacheable, cacheRegion, - comment, null, transformer) + public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, IDictionary<string, LockMode> lockModes, RowSelection rowSelection, bool isReadOnlyInitialized, bool readOnly, bool cacheable, string cacheRegion, string comment, bool isLookupByNaturalKey, IResultTransformer transformer, IDictionary<int,int> tempPagingParameterIndexes) + : this(positionalParameterTypes, positionalParameterValues, null, lockModes, rowSelection, isReadOnlyInitialized, readOnly, cacheable, cacheRegion, comment, null, transformer) { NaturalKeyLookup = isLookupByNaturalKey; _tempPagingParameterIndexes = tempPagingParameterIndexes; } - public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, - IDictionary<string, TypedValue> namedParameters, IDictionary<string, LockMode> lockModes, - RowSelection rowSelection, bool readOnly, bool cacheable, string cacheRegion, string comment, - object[] collectionKeys, IResultTransformer transformer) + public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, IDictionary<string, TypedValue> namedParameters, IDictionary<string, LockMode> lockModes, RowSelection rowSelection, bool isReadOnlyInitialized, bool readOnly, bool cacheable, string cacheRegion, string comment, object[] collectionKeys, IResultTransformer transformer) { _positionalParameterTypes = positionalParameterTypes; _positionalParameterValues = positionalParameterValues; @@ -102,25 +89,19 @@ _cacheRegion = cacheRegion; _comment = comment; _collectionKeys = collectionKeys; + _isReadOnlyInitialized = isReadOnlyInitialized; _readOnly = readOnly; _resultTransformer = transformer; } - public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, - IDictionary<string, TypedValue> namedParameters, IDictionary<string, LockMode> lockModes, - RowSelection rowSelection, bool readOnly, bool cacheable, string cacheRegion, string comment, - object[] collectionKeys, object optionalObject, string optionalEntityName, object optionalId, - IResultTransformer transformer) - : this( - positionalParameterTypes, positionalParameterValues, namedParameters, lockModes, rowSelection, readOnly, cacheable, - cacheRegion, comment, collectionKeys, transformer) + public QueryParameters(IType[] positionalParameterTypes, object[] positionalParameterValues, IDictionary<string, TypedValue> namedParameters, IDictionary<string, LockMode> lockModes, RowSelection rowSelection, bool isReadOnlyInitialized, bool readOnly, bool cacheable, string cacheRegion, string comment, object[] collectionKeys, object optionalObject, string optionalEntityName, object optionalId, IResultTransformer transformer) + : this(positionalParameterTypes, positionalParameterValues, namedParameters, lockModes, rowSelection, isReadOnlyInitialized, readOnly, cacheable, cacheRegion, comment, collectionKeys, transformer) { _optionalEntityName = optionalEntityName; _optionalId = optionalId; _optionalObject = optionalObject; } - /// <summary></summary> public bool HasRowSelection { get { return _rowSelection != null; } @@ -136,9 +117,6 @@ get { return offsetParameterIndex; } } - /// <summary> - /// Named parameters. - /// </summary> public IDictionary<string, TypedValue> NamedParameters { get { return _namedParameters; } @@ -146,7 +124,7 @@ } /// <summary> - /// Gets or sets an array of <see cref="IType"/> objects that is stored at the index + /// Gets or sets an array of <see cref="IType"/> objects that is stored at the index /// of the Parameter. /// </summary> public IType[] PositionalParameterTypes @@ -161,7 +139,7 @@ } /// <summary> - /// Gets or sets an array of <see cref="object"/> objects that is stored at the index + /// Gets or sets an array of <see cref="object"/> objects that is stored at the index /// of the Parameter. /// </summary> public object[] PositionalParameterValues @@ -190,6 +168,19 @@ set { _lockModes = value; } } + /// <summary> + /// Has the read-only/modifiable mode been explicitly set? + /// </summary> + /// <value> + /// <c>true</c>, the read-only/modifiable mode was explicitly set; <c>false</c>, the read-only/modifiable mode was not explicitly set + /// </value> + /// <seealso cref="ReadOnly" /> + /// <seealso cref="IsReadOnly(ISessionImplementor)" /> + public bool IsReadOnlyInitialized + { + get { return _isReadOnlyInitialized; } + } + private void CreatePositionalParameterLocations(ISessionFactoryImplementor factory) { _positionalParameterLocations = new int[_positionalParameterTypes.Length]; @@ -211,7 +202,6 @@ return array.Length; } - /// <summary></summary> public void LogParameters(ISessionFactoryImplementor factory) { var print = new Printer(factory); @@ -248,7 +238,7 @@ /// Ensure the Types and Values are the same length. /// </summary> /// <exception cref="QueryException"> - /// If the Lengths of <see cref="PositionalParameterTypes"/> and + /// If the Lengths of <see cref="PositionalParameterTypes"/> and /// <see cref="PositionalParameterValues"/> are not equal. /// </exception> public void ValidateParameters() @@ -290,11 +280,30 @@ } public bool Callable { get; set; } - + + /// <summary> + /// Should entities and proxies loaded by the query be put in read-only mode? + /// </summary> + /// <remarks> + /// The read-only/modifiable setting has no impact on entities/proxies returned by the + /// query that existed in the session before the query was executed. + /// </remarks> + /// <seealso cref="IsReadOnlyInitialized" /> + /// <seealso cref="IsReadOnly(ISessionImplementor)" /> public bool ReadOnly { - get { return _readOnly; } - set { _readOnly = value; } + get + { + if (!_isReadOnlyInitialized) + throw new InvalidOperationException("cannot call ReadOnly when IsReadOnlyInitialized returns false"); + + return _readOnly; + } + set + { + _readOnly = value; + _isReadOnlyInitialized = true; + } } /************** Filters ********************************/ @@ -674,7 +683,7 @@ public QueryParameters CreateCopyUsing(RowSelection selection) { var copy = new QueryParameters(_positionalParameterTypes, _positionalParameterValues, _namedParameters, _lockModes, - selection, _readOnly, _cacheable, _cacheRegion, _comment, _collectionKeys, + selection, _isReadOnlyInitialized, _readOnly, _cacheable, _cacheRegion, _comment, _collectionKeys, _optionalObject, _optionalEntityName, _optionalId, _resultTransformer); copy._positionalParameterLocations = _positionalParameterLocations; copy.processedSQL = processedSQL; @@ -683,5 +692,27 @@ copy.filteredParameterLocations = filteredParameterLocations; return copy; } + + /// <summary> + /// Should entities and proxies loaded by the query be put in read-only mode? If the + /// read-only/modifiable setting was not initialized + /// (i.e. <see cref="IsReadOnlyInitialized" /> == false), then the default + /// read-only/modifiable setting for the persistence context is returned instead. + /// </summary> + /// <remarks> + /// The read-only/modifiable setting has no impact on entities/proxies returned by the + /// query that existed in the session before the query was executed. + /// </remarks> + /// <seealso cref="IsReadOnlyInitialized" /> + /// <seealso cref="ReadOnly" /> + /// <seealso cref="IPersistenceContext.DefaultReadOnly" /> + /// <param name="session"></param> + /// <returns> + /// <c>true</c>, entities and proxies loaded by the query will be put in read-only mode; <c>false</c>, entities and proxies loaded by the query will be put in modifiable mode + /// </returns> + public bool IsReadOnly(ISessionImplementor session) + { + return _isReadOnlyInitialized ? this.ReadOnly : session.PersistenceContext.DefaultReadOnly; + } } } \ No newline at end of file Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2011-02-11 14:44:33 UTC (rev 5379) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2011-02-11 16:07:38 UTC (rev 5380) @@ -17,10 +17,10 @@ namespace NHibernate.Engine { - /// <summary> + /// <summary> /// A <see cref="IPersistenceContext"/> represents the state of persistent "stuff" which /// NHibernate is tracking. This includes persistent entities, collections, - /// as well as proxies generated. + /// as well as proxies generated. /// </summary> /// <remarks> /// There is meant to be a one-to-one correspondence between a SessionImpl and @@ -97,6 +97,8 @@ [NonSerialized] private BatchFetchQueue batchFetchQueue; + private bool defaultReadOnly; + /// <summary> Constructs a PersistentContext, bound to the given session. </summary> /// <param name="session">The session "owning" this context. </param> public StatefulPersistenceContext(ISessionImplementor session) @@ -132,15 +134,15 @@ get { return false; } } - /// <summary> - /// Get the session to which this persistence context is bound. + /// <summary> + /// Get the session to which this persistence context is bound. /// </summary> public ISessionImplementor Session { get { return session; } } - /// <summary> + /// <summary> /// Retrieve this persistence context's managed load context. /// </summary> public LoadContexts LoadContexts @@ -154,7 +156,7 @@ } } - /// <summary> + /// <summary> /// Get the <tt>BatchFetchQueue</tt>, instantiating one if necessary. /// </summary> public BatchFetchQueue BatchFetchQueue @@ -221,7 +223,7 @@ unownedCollections[key] = collection; } - /// <summary> + /// <summary> /// Get and remove a collection whose owner is not yet loaded, /// when its owner is being loaded /// </summary> @@ -245,7 +247,8 @@ { foreach (INHibernateProxy proxy in proxiesByKey.Values) { - proxy.HibernateLazyInitializer.Session = null; + ILazyInitializer li = proxy.HibernateLazyInitializer; + li.UnsetSession(); } ICollection collectionEntryArray = IdentityMap.ConcurrentEntries(collectionEntries); @@ -283,6 +286,13 @@ { get { return hasNonReadOnlyEntities; } } + + /// <inheritdoc /> + public bool DefaultReadOnly + { + get { return defaultReadOnly; } + set { defaultReadOnly = value; } + } private void SetHasNonReadOnlyEnties(Status value) { @@ -307,9 +317,9 @@ entityEntry.LockMode = LockMode.None; } - /// <summary> + /// <summary> /// Get the current state of the entity as known to the underlying - /// database, or null if there is no corresponding row + /// database, or null if there is no corresponding row /// </summary> public object[] GetDatabaseSnapshot(object id, IEntityPersister persister) { @@ -327,7 +337,7 @@ } } - /// <summary> + /// <summary> /// Retrieve the cached database snapshot for the requested entity key. /// </summary> /// <param name="key">The entity key for which to retrieve the cached snapshot </param> @@ -352,9 +362,9 @@ return (object[])snapshot; } - /// <summary> - /// Get the values of the natural id fields as known to the underlying - /// database, or null if the entity has no natural id or there is no + /// <summary> + /// Get the values of the natural id fields as known to the underlying + /// database, or null if the entity has no natural id or there is no /// corresponding row. /// </summary> public object[] GetNaturalIdSnapshot(object id, IEntityPersister persister) @@ -408,7 +418,7 @@ BatchFetchQueue.RemoveBatchLoadableEntityKey(key); } - /// <summary> + /// <summary> /// Get the entity instance associated with the given <tt>EntityKey</tt> /// </summary> public object GetEntity(EntityKey key) @@ -424,7 +434,7 @@ return entitiesByKey.ContainsKey(key); } - /// <summary> + /// <summary> /// Remove an entity from the session cache, also clear /// up other state associated with the entity, all except /// for the <tt>EntityEntry</tt> @@ -465,8 +475,8 @@ entitiesByUniqueKey[euk] = entity; } - /// <summary> - /// Retrieve the EntityEntry representation of the given entity. + /// <summary> + /// Retrieve the EntityEntry representation of the given entity. /// </summary> /// <param name="entity">The entity for which to locate the EntityEntry. </param> /// <returns> The EntityEntry for the given entity. </returns> @@ -505,8 +515,8 @@ return AddEntry(entity, status, loadedState, null, entityKey.Identifier, version, lockMode, existsInDatabase, persister, disableVersionIncrement, lazyPropertiesAreUnfetched); } - /// <summary> - /// Generates an appropriate EntityEntry instance and adds it + /// <summary> + /// Generates an appropriate EntityEntry instance and adds it /// to the event source's internal caches. /// </summary> public EntityEntry AddEntry(object entity, Status status, object[] loadedState, object rowId, object id, @@ -534,8 +544,8 @@ return proxiesByKey.ContainsValue(proxy); } - /// <summary> - /// Takes the given object and, if it represents a proxy, reassociates it with this event source. + /// <summary> + /// Takes the given object and, if it represents a proxy, reassociates it with this event source. /// </summary> /// <param name="value">The possible proxy to be reassociated. </param> /// <returns> Whether the passed value represented an actual proxy which got initialized. </returns> @@ -560,9 +570,9 @@ } } - /// <summary> + /// <summary> /// If a deleted entity instance is re-saved, and it has a proxy, we need to - /// reset the identifier of the proxy + /// reset the identifier of the proxy /// </summary> public void ReassociateProxy(object value, object id) { @@ -585,7 +595,7 @@ } } - /// <summary> + /// <summary> /// Associate a proxy that was instantiated by another session with this session /// </summary> /// <param name="li">The proxy initializer. </param> @@ -605,7 +615,7 @@ } } - /// <summary> + /// <summary> /// Get the entity instance underlying the given proxy, throwing /// an exception if the proxy is uninitialized. If the given object /// is not a proxy, simply return the argument. @@ -626,7 +636,7 @@ if (li.IsUninitialized) throw new PersistentObjectException("object was an uninitialized proxy for " + li.PersistentClass.FullName); - return li.GetImplementation(); // unwrap the object + return li.GetImplementation(); // unwrap the object } else { @@ -634,8 +644,8 @@ } } - /// <summary> - /// Possibly unproxy the given reference and reassociate it with the current session. + /// <summary> + /// Possibly unproxy the given reference and reassociate it with the current session. /// </summary> /// <param name="maybeProxy">The reference to be unproxied if it currently represents a proxy. </param> /// <returns> The unproxied instance. </returns> @@ -652,12 +662,12 @@ { ILazyInitializer li = proxy.HibernateLazyInitializer; ReassociateProxy(li, proxy); - return li.GetImplementation(); //initialize + unwrap the object + return li.GetImplementation(); //initialize + unwrap the object } return maybeProxy; } - /// <summary> + /// <summary> /// Attempts to check whether the given key represents an entity already loaded within the /// current session. /// </summary> @@ -676,11 +686,11 @@ } } - /// <summary> + /// <summary> /// If the existing proxy is insufficiently "narrow" (derived), instantiate a new proxy /// and overwrite the registration of the old one. This breaks == and occurs only for /// "class" proxies rather than "interface" proxies. Also init the proxy to point to - /// the given target implementation if necessary. + /// the given target implementation if necessary. /// </summary> /// <param name="proxy">The proxy instance to be narrowed. </param> /// <param name="persister">The persister for the proxied entity. </param> @@ -706,7 +716,13 @@ else { proxy = (INHibernateProxy)persister.CreateProxy(key.Identifier, session); + INHibernateProxy proxyOrig = proxiesByKey[key]; proxiesByKey[key] = proxy; //overwrite old proxy + if (proxyOrig != null) + { + bool readOnlyOrig = proxyOrig.HibernateLazyInitializer.ReadOnly; + proxy.HibernateLazyInitializer.ReadOnly = readOnlyOrig; + } return proxy; } } @@ -720,7 +736,7 @@ } } - /// <summary> + /// <summary> /// Return the existing proxy associated with the given <tt>EntityKey</tt>, or the /// third argument (the entity associated with the key) if no proxy exists. Init /// the proxy to the target implementation, if necessary. @@ -741,7 +757,7 @@ } } - /// <summary> + /// <summary> /// Return the existing proxy associated with the given <tt>EntityKey</tt>, or the /// argument (the entity associated with the key) if no proxy exists. /// (slower than the form above) @@ -761,7 +777,7 @@ /// <summary> Get the entity that owned this persistent collection when it was loaded </summary> /// <param name="collection">The persistent collection </param> - /// <returns> + /// <returns> /// The owner, if its entity ID is available from the collection's loaded key /// and the owner entity is in the persistence context; otherwise, returns null /// </returns> @@ -819,7 +835,7 @@ AddCollection(collection, ce, collection.Key); } - /// <summary> + /// <summary> /// Add a new collection (ie. a newly created one, just instantiated by the /// application, with no database state or snapshot) /// </summary> @@ -865,7 +881,7 @@ collectionEntries[collection] = ce; } - /// <summary> + /// <summary> /// add an (initialized) collection that was created by another session and passed /// into update() (ie. one with a snapshot and existing state on the database) /// </summary> @@ -903,7 +919,7 @@ return null; } - /// <summary> + /// <summary> /// Register a collection for non-lazy loading at the end of the two-phase load /// </summary> public void AddNonLazyCollection(IPersistentCollection collection) @@ -911,7 +927,7 @@ nonlazyCollections.Add(collection); } - /// <summary> + /// <summary> /// Force initialization of all non-lazy collections encountered during /// the current two-phase load (actually, this is a no-op, unless this /// is the "outermost" load) @@ -953,7 +969,7 @@ } /// <summary> Register a <tt>PersistentCollection</tt> object for an array. - /// Associates a holder with an array - MUST be called after loading + /// Associates a holder with an array - MUST be called after loading /// array, since the array instance is not created until endLoad(). /// </summary> public void AddCollectionHolder(IPersistentCollection holder) @@ -962,7 +978,7 @@ arrayHolders[holder.GetValue()] = holder; } - /// <summary> + /// <summary> /// Remove the mapping of collection to holder during eviction of the owning entity /// </summary> public IPersistentCollection RemoveCollectionHolder(object array) @@ -978,7 +994,7 @@ return GetCollectionEntry(coll).Snapshot; } - /// <summary> + /// <summary> /// Get the collection entry for a collection passed to filter, /// which might be a collection wrapper, an array, or an unwrapped /// collection. Return null if there is no entry. @@ -1061,7 +1077,7 @@ loadCounter--; } - /// <summary> + /// <summary> /// Search the persistence context for an owner for the child object, /// given a collection role /// </summary> @@ -1071,7 +1087,7 @@ // TODO persistent context (BackrefPropertyAccessor) } - /// <summary> + /// <summary> /// Search the persistence context for an index of the child object, given a collection role /// </summary> public object GetIndexInOwner(string entity, string property, object childObject, IDictionary mergeMap) @@ -1080,7 +1096,7 @@ // TODO persistent context (IndexPropertyAccessor) } - /// <summary> + /// <summary> /// Record the fact that the association belonging to the keyed entity is null. /// </summary> public void AddNullProperty(EntityKey ownerKey, string propertyName) @@ -1094,18 +1110,80 @@ return nullAssociations.Contains(new AssociationKey(ownerKey, propertyName)); } - /// <summary> Set the object to read only and discard it's snapshot</summary> - public void SetReadOnly(object entity, bool readOnly) + public void SetReadOnly(object entityOrProxy, bool readOnly) { + if (entityOrProxy == null) + throw new ArgumentNullException("entityOrProxy"); + + if (IsReadOnly(entityOrProxy) == readOnly) + return; + + if (entityOrProxy is INHibernateProxy) + { + INHibernateProxy proxy = (INHibernateProxy)entityOrProxy; + SetProxyReadOnly(proxy, readOnly); + if (NHibernateUtil.IsInitialized(proxy)) + { + SetEntityReadOnly(proxy.HibernateLazyInitializer.GetImplementation(), readOnly); + } + } + else + { + SetEntityReadOnly(entityOrProxy, readOnly); + + // PersistenceContext.proxyFor( entity ) returns entity if there is no proxy for that entity + // so need to check the return value to be sure it is really a proxy + object maybeProxy = this.Session.PersistenceContext.ProxyFor(entityOrProxy); + if (maybeProxy is INHibernateProxy ) + { + SetProxyReadOnly((INHibernateProxy)maybeProxy, readOnly); + } + } + } + + private void SetProxyReadOnly(INHibernateProxy proxy, bool readOnly) + { + if (proxy.HibernateLazyInitializer.Session != this.Session) + { + throw new AssertionFailure("Attempt to set a proxy to read-only that is associated with a different session"); + } + proxy.HibernateLazyInitializer.ReadOnly = readOnly; + } + + private void SetEntityReadOnly(object entity, bool readOnly) + { EntityEntry entry = GetEntry(entity); if (entry == null) { - throw new TransientObjectException("Instance of" + entity.GetType() + " was not associated with the session"); + throw new TransientObjectException("Instance was not associated with this persistence context"); } entry.SetReadOnly(readOnly, entity); hasNonReadOnlyEntities |= !readOnly; } - + + public bool IsReadOnly(object entityOrProxy) + { + if (entityOrProxy == null) + { + throw new AssertionFailure("object must be non-null."); + } + bool isReadOnly; + if (entityOrProxy is INHibernateProxy) + { + isReadOnly = ((INHibernateProxy)entityOrProxy).HibernateLazyInitia... [truncated message content] |
From: <jul...@us...> - 2011-02-11 14:44:39
|
Revision: 5379 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5379&view=rev Author: julian-maughan Date: 2011-02-11 14:44:33 +0000 (Fri, 11 Feb 2011) Log Message: ----------- Allow immutable objects to be deleted (ref. NH-1985) Modified Paths: -------------- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2011-02-10 15:25:32 UTC (rev 5378) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2011-02-11 14:44:33 UTC (rev 5379) @@ -90,12 +90,6 @@ version = entityEntry.Version; } - if (!persister.IsMutable) - { - throw new HibernateException("Attempted to delete an object of immutable class: " - + MessageHelper.InfoString(persister)); - } - if (InvokeDeleteLifecycle(source, entity, persister)) { return; Modified: branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs =================================================================== --- branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs 2011-02-10 15:25:32 UTC (rev 5378) +++ branches/ReadOnlyEntities/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs 2011-02-11 14:44:33 UTC (rev 5379) @@ -26,6 +26,7 @@ } [Test] + [Ignore("It is valid to be delete immutable entities")] public void AttemptToDeleteImmutableObjectShouldThrow() { using (ISession session = OpenSession()) @@ -62,5 +63,43 @@ } } } + + [Test] + public void AllowDeletionOfImmutableObject() + { + using (ISession session = OpenSession()) + { + Assert.DoesNotThrow(() => + { + using (ITransaction trans = session.BeginTransaction()) + { + var entity = session.Get<DomainClass>(1); + session.Delete(entity); + + trans.Commit(); + } + }); + } + + using (IConnectionProvider prov = ConnectionProviderFactory.NewConnectionProvider(cfg.Properties)) + { + IDbConnection conn = prov.GetConnection(); + + try + { + using (IDbCommand comm = conn.CreateCommand()) + { + comm.CommandText = "SELECT Id FROM DomainClass WHERE Id=1 AND Label='TEST record'"; + object result = comm.ExecuteScalar(); + + Assert.That(result == null, "Immutable object has not been deleted!"); + } + } + finally + { + prov.CloseConnection(conn); + } + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |