I would like to have a mapped class named “Message”. This class should include an unique id, the title, the text, and information about the sender and the receiver. I need their User-ID an their name, so I’ve created another class named “User”. This class include these two properties (later I’ll create some methods for this class and use it in different classes, so I can not use onyl the class “Message”).
This is my code
public class User
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
}
public class Message
{
public virtual Guid Id { get; set; }
public User sender;
public User receiver;
public virtual string subject { get; set; }
public virtual string text { get; set; }
}
public class MessageMap : ClassMap<Message>, IMappedEntity
{
public MessageMap()
{
Id(x => x.Id, "MessageId");
Map(x => x.sender.Id, "SenderId");
Map(x => x.receiver.Id, "ReceiverId");
Map(x => x.subject);
Map(x => x.text);
}
}
As you can see, I want to save only the User-ID of the sender and receiver, not their names. Because x.Id, x.sender.Id and x.receiver.Id have the property “Id”, I wrote down a spezific name for them in the database.
But if I try to load the site, this error appears: Tried to add property ‘Id’ when already added., even if their is no more property named “Id” after I definited the Name for the columns…
Could you give me a hint what I’m doing wrong?
I finally found an other solution: I changed the mapping of my Message-Map to this:
Now, I do not have to map the User-Class, so I don’t have a table only with my Userids.
I’m not too familar with using nHibernate, so I’m not shure wether this is the best way to solve the problem, but in my eyes this fits a bit more to my problem then the solution presented by Chev (but I’m very grateful that you have answered me!)