c# nhibernate fluent-nhibernate mapping

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); }