Have you tried it with just _one_ proxy factory?

John Davidson

On Fri, Aug 13, 2010 at 10:25 AM, Valeriu Caraulean <[email protected]>wrote:

> Forgot to specify some details:
>  - NHibernate trunk (today)
>  - VS 2010  & NET 4.0, Windows 7 x64.
>  - proxy factories: linfu & castle.
>
>
> On Fri, Aug 13, 2010 at 4:21 PM, Valeriu Caraulean <[email protected]>wrote:
>
>> I've got into situation where my mappings and domain are throwing to me a
>> FatalExecutionEngineError.
>> I'll be posting the code here, hoping that someone can help me understand,
>> I'm doing "unnatural" things with NHibernate or it's a bug somewhere...
>>
>> The exact error I'm getting is:
>>
>> *FatalExecutionEngineError was detected*
>>
>> Message: The runtime has encountered a fatal error. The address of the
>> error was at 0xf8a213a3, on thread 0x660. The error code is 0xc0000005. This
>> error may be a bug in the CLR or in the unsafe or non-verifiable portions of
>> user code. Common sources of this bug include user marshaling errors for
>> COM-interop or PInvoke, which may corrupt the stack.
>>
>> Example is stripped down to minimum from our project. Names are awkward,
>> scenario probably looks silly, but that's extracted from our real domain.
>> I'm showing only relevant part of classes. For full VS project see
>> http://github.com/vcaraulean/NHibernate.FEEE .
>>
>> *Domain*: two classes with one-to-many relation. Classes are "aggregate
>> roots", modified individually but in same session/transaction scope. Using
>> double dispatch to keep aware one of another.
>>
>> public class First
>> {
>> public First(Second second)
>> {
>> Second = second;
>> }
>>
>> private Second second;
>> public virtual Second Second
>> {
>> get { return second; }
>> private set
>> {
>> second = value;
>> second.AddFirst(this);
>> }
>> }
>> }
>>
>> public class Second
>> {
>> private readonly List<First> collectionOfFirsts;
>>
>> public Second()
>> {
>> collectionOfFirsts = new List<First>();
>> }
>>
>> public virtual IEnumerable<First> CollectionOfFirsts
>> {
>> get { return collectionOfFirsts; }
>> }
>>
>> public virtual void AddFirst(First first)
>> {
>> collectionOfFirsts.Add(first); *// Here FatalExecutionEngineError is
>> thrown*
>> }
>> }
>>
>> *Mapping files, FluenNHibernate:*
>>
>> public class FirstPersistenceMap : ClassMap<First>
>> {
>> public FirstPersistenceMap()
>> {
>> Id(x => x.Id);
>> References(x => x.Second);
>> }
>> }
>>
>> public class SecondPersistenceMap : ClassMap<Second>
>> {
>> public SecondPersistenceMap()
>> {
>> Id(x => x.Id);
>> HasMany(x => x.CollectionOfFirsts)
>> .Access.ReadOnlyPropertyThroughCamelCaseField();
>> }
>> }
>>
>> *Usage, in unit test:*
>>
>> using (var session = sessionFactory.OpenSession())
>> using (var tx = session.BeginTransaction())
>> {
>> var second = new Second();
>> session.Save(second);
>>
>> var firstClass = new First(second);
>> session.Save(firstClass);
>> }
>>
>> Two questions:
>>  - What I'm doing wrong here?
>>  - How can I map it so it will work as expected?
>>
>> Thanks!
>>
>
>  --
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>

-- 
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.

Reply via email to