Fluent Nhibernate mapping hasMany
29,763
You want to make use of References and HasMany associations. You are already using HasMany, so to get the other association:
public PropertyMap()
{
Table("Property");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Title).Length(255).Not.Nullable();
HasMany(x => x.Photos).KeyColumn("Id"); // you were already doing this
}
public PhotoMap()
{
Table("Photo");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Version);
Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000);
Map(x => x.ImageMimeType);
References( x => x.Property ) // you'll need 'Property' in your class definition too
.Column('PhotoId')
.Cascade.All();
}
Author by
BobRock
interested in: ddd c#, signalr, asp.net-mvc, angularjs
Updated on November 17, 2020Comments
-
BobRock over 3 years
In my MSSQL I have two tables, Property and Photo.
To make it shorter I will write here just few fields. Property table
Id int not null Title nvarchar(255) not null PhotoId int not null
Photo table
Id int not null ImageData varbinary(MAX) null ImageMimeType varchar(50) null
Relationship is as follows:
FK_Property_Photo
Primary Key table Foreign key table -------------------------------------------- Photo Property -------------------------------------------- Id PhotoId
As you can imagine one property can have one or many images. One image can belong to one or meny properties.
I Tried with this kind of mapping
public PropertyMap() { Table("Property"); Id(x => x.Id).GeneratedBy.Identity(); Map(x => x.Title).Length(255).Not.Nullable(); HasMany(x => x.Photos).KeyColumn("Id"); } public PhotoMap() { Table("Photo"); Id(x => x.Id).GeneratedBy.Identity(); Map(x => x.Version); Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000); Map(x => x.ImageMimeType); }
-
dwerner about 12 yearsYou're welcome. Now I might just understand fluent mappings when I see them. :)