Hi,
I have a question regarding LINQ to NHibernate. I am using the
recently released Alpha version of NHibernate.Linq.
I am trying to execute the following query within a Where clause:
ci => ci.Details.Any(cd => cd.Name == "DetailName" && ((StringDetail)
cd).TypedValue == "Hello")
I am getting this error:
System.InvalidCastException: Invalid cast from 'System.String' to
'Zeus.ContentTypes.Properties.ContentDetail'.
at System.Convert.DefaultToType(IConvertible value, Type
targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type,
IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType,
IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType)
at NHibernate.Linq.Util.LinqUtil.ChangeType(Object value, Type
conversionType) in D:\Users\Tim Jones\Downloads\NHibernate.Linq\src
\NHibernate.Linq\Util\LinqUtil.cs:line 77
at NHibernate.Linq.Visitors.BinaryCriterionVisitor.GetBinaryCriteria
(ICriteria rootCriteria, ISession session, BinaryExpression expr,
ComparePropToValue comparePropToValue, ComparePropToProp
comparePropToProp, CompareValueToCriteria compareValueToCriteria,
ComparePropToCriteria comparePropToCriteria) in D:\Users\Tim Jones
\Downloads\NHibernate.Linq\src\NHibernate.Linq\Visitors
\BinaryCriterionVisitor.cs:line 129
...
"Details" is a "list" collection, mapped to an IList<ContentDetail>.
ContentDetail is an abstract class from which StringDetail inherits.
The mapping file is as follows:
<class name="Zeus.ContentTypes.Properties.ContentDetail, Zeus"
table="zeusDetails">
...
<subclass name="Zeus.ContentTypes.Properties.StringDetail, Zeus"
discriminator-value="String">
<property name="TypedValue" column="StringValue"
type="StringClob"
length="1073741823" />
</subclass>
</class>
I've tried to work out what BinaryCriterionVisitor is doing - it seems
to be assuming that "Hello" should be converted to a ContentDetail
object. So I'm guessing that this kind of query is not supported by
LINQ to NHibernate? Is there any other way of doing this query that is
supported?
If it's something relatively straightforward, I'd be happy to have a
go at modifying the NHibernate.Linq code myself.
Thanks for taking the time to read this, and any help with be much
appreciated.
Tim
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---