I have a very unusual problem with one relationship in my class (and
only this one) out of some 60 classes. Problem is that the unit test
that tests mapping passes on my local machine, but fails on the build
server. Mind you everything is pointing to the same database, problem
is not with a data. Problem is that on my machine, when unit test is
run, collection is uninitialized until accessed. On the server, is
shows as initialized. Here is the unit test (please do not comment on
unit test itself, it is what it is):

[Test]
        public void Can_Load_With_ClientNotes()
        {
            Domain.Client.Entities.Client client =
clientRepository.FindByNumber(261).FirstOrDefault();
            Assert.That(client, Is.Not.Null);

            Assert.That(NHibernateUtil.IsInitialized
(client.LazyNotes),Is.False, "IsInitialized - before");

            NHibernateUtil.Initialize(client.LazyNotes);

            Assert.That(NHibernateUtil.IsInitialized
(client.LazyNotes), Is.True, "IsInitialized - after");

            Assert.That(client.LazyNotes.Any(),Is.True, "LazyNotes");

            Assert.That(client.LazyNotes.Count(), Is.GreaterThan(0));
        }

Here is the mapping for the Client and ClientNote

ClientMap

public class ClientMap : ClassMap<Client.Entities.Client>
    {
        public ClientMap()
        {
            DefaultAccess.AsCamelCaseField(Prefix.Underscore);
            WithTable("vw_Client");

            Id(x => x.Id, "ClientId");

            Map(x => x.Name, "ClientNameTxt");
            Map(x => x.Number, "ClientNum");
            Map(x => x.EnrollmentSize, "EnrollmentSizeNum");

            References(x => x.AccountType, "AcctTypeCd");
            References(x => x.LineOfBusiness, "LineOfBusinessCd");

            HasMany(x => x.EagerNotes).KeyColumnNames.Add
("ClientId").Not.LazyLoad();
            HasMany(x => x.LazyNotes).KeyColumnNames.Add
("ClientId").LazyLoad().AsBag();

            HasMany(x => x.AccountTypeHistory)
              .KeyColumnNames.Add("ClientId")
              .Cascade.SaveUpdate();


ClientNote:

 public class ClientNoteMap : ClassMap<ClientNote>
    {
        public ClientNoteMap()
        {
            DefaultAccess.AsCamelCaseField(Prefix.Underscore);

            WithTable("vw_D_ClientNote");

            Id(x => x.Id, "NoteId");

            Map(x => x.Subject, "NoteSubjectTxt");
            Map(x => x.CreationDate, "NoteCrtDt");
            Map(x => x.ShortText, "NoteShrtTxt");
            Map(x => x.Text, "NoteTxt");
        }
    }

Facts:

1. this  Assert.That(NHibernateUtil.IsInitialized
(client.LazyNotes),Is.False, "IsInitialized - before"); passes on my
machine, and same code fails on build server.

2. I take this dll and put it in the web bin directory, and I step
through the code and this is what I see for generated proxy. All other
collections are as PersistentGenericBag, except for LazyNotes? How
come?

?CurrentBid.Client
{ClientProxybef6f8a3309c43f7b7b98a0d8f36d526}
    [ClientProxybef6f8a3309c43f7b7b98a0d8f36d526]:
{ClientProxybef6f8a3309c43f7b7b98a0d8f36d526}
    base {SR.Domain.Common.Infrastructure.PersistentObject}:
{ClientProxybef6f8a3309c43f7b7b98a0d8f36d526}
    AccountType: {AccountTypeProxyf2cfb29f153b4e8abd4cfcc946b97213}
    AccountTypeHistory:
{NHibernate.Collection.Generic.PersistentGenericBag<SR.Domain.Client.Entities.ClientAccountTypeHistoryItem>}
    ClientType: null
    EagerNotes: Count = 0
    EnrollmentSize: 35161
    LazyNotes: Count = 0
    LineOfBusiness:
{LineOfBusinessProxy7010d97df001455f8e464a03477c23d3}
    Name: "Purdue University"
    Number: 261



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to nhusers@googlegroups.com
To unsubscribe from this group, send email to 
nhusers+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to