c# - mapping fluent nhibernate
Mapeo de Nhibernate fluido hasMany (1)
Desea hacer uso de referencias y asociaciones HasMany . Ya estás usando HasMany, para obtener la otra asociación:
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();
}
En mi MSSQL tengo dos tablas, Propiedad y Foto.
Para hacerlo más corto, escribiré aquí solo algunos campos. Tabla de propiedades
Id int not null
Title nvarchar(255) not null
PhotoId int not null
Mesa de fotos
Id int not null
ImageData varbinary(MAX) null
ImageMimeType varchar(50) null
La relación es la siguiente:
FK_Property_Photo
Primary Key table Foreign key table
--------------------------------------------
Photo Property
--------------------------------------------
Id PhotoId
Como se puede imaginar, una propiedad puede tener una o muchas imágenes. Una imagen puede pertenecer a una o varias propiedades.
Intenté con este tipo de mapeo
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);
}