Hello,

I have two classes: one that inherits from Dictionary<> and which add
some extra funtionality, and one that uses it like this:

public class Distribution<T> : Dictionary<T, Decimal>, IComparable<T>
{
}

public class NotaRow
{
    public NotaRow()
    {
        Children = new Distribution<NotaRow>();
        Id = Guid.NewGuid();
    }

    public NotaRow(String description, Decimal toPay)
    {
        Description = description;
        ToPay = toPay;
    }

    public Guid Id { get; private set; }
    public String Description { get; set; }
    public Decimal ToPay { get; set; }

    public Distribution<NotaRow> Children { get; private set; }

    public void Distribute(IEnumerable<Decimal> percentages)
    {
        foreach (Decimal percentage in percentages)
        {
            NotaRow row = new NotaRow(Description, ToPay *
percentage);
            Children.Add(row, percentage);
        }
    }
}

I try to map the NotaRow class to a database with the following
mapping:
<class name="NotaRow">
  <id name="Id" type="Guid">
    <generator class="assigned" />
  </id>
  <property name="Description" />
  <property name="ToPay" />
  <map name="Children">
    <key column="Id" />
    <index column="NotaRowId" type="Guid" />
    <element column="Distribution" type="Decimal" />
  </map>
</class>

Of course I get an error that the map is not working since I don't use
any interface and only a custom dictionary type. So for ease I replace
the Distribution class with the IDictionary<>/Dictionary combination.
But still NHibernate is complaining that it can't save the
NotaRow.Children
"Exception: Could not insert collection... The insert statement
conflicted with the foreign key Id NotaRowId"

Can anybody give me some advice on how to solve this challange? for me
these dictionary mappings are the biggest challange this far with
NHibernate. (mapping to a BindingList was not easy either, but that is
already solved using custom collection types.)

David.

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