tengo una solución nhibernate y yo estoy tratando de hacer una salvación, pero yo estoy recibiendo este error:Error con Nhibernate: System.Data.SqlClient.SqlException: Sintaxis incorrecta cerca de 'Índice'
Test method HelloMusic.Core.Test.CrudTests.TestTrackAdd threw exception:
NHibernate.Exceptions.GenericADOException: could not insert collection: [HelloMusic.BLL.Track.Credits#20][SQL: INSERT INTO Tracks_Credits (TrackID, Index, CreditID) VALUES (@p0, @p1, @p2)] ---> System.Data.SqlClient.SqlException: Incorrect syntax near 'Index'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.
el SQL es el siguiente:
NHibernate: SELECT this_.GenreID as GenreID9_0_, this_.GenreName as GenreName9_0_ FROM Genres this_
NHibernate: INSERT INTO Tracks (ContainsSamples, Description, HasExplicitLyrics, IsCover, Lyrics, Name, OrderIndex, GenreID) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7); select SCOPE_IDENTITY();@p0 = False, @p1 = 'Teh awesome18133437', @p2 = True, @p3 = False, @p4 = 'b'z in yer mouth18141375', @p5 = 'beez in yer mouth18141375', @p6 = 1, @p7 = 1
NHibernate: INSERT INTO Credits (Email, Location, Name, Role) VALUES (@p0, @p1, @p2, @p3); select SCOPE_IDENTITY();@p0 = '[email protected]', @p1 = NULL, @p2 = 'Some Dood', @p3 = 'teh Awesums'
NHibernate: INSERT INTO Images (ForeignEntityID, ForeignEntityType, CreatedDate, Extension, FileName, Height, IsOriginal, LastModifiedDate, LocationPath, MetaData, SizeInKiloBytes, Type, Width) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12); select SCOPE_IDENTITY();@p0 = 0, @p1 = 'Track', @p2 = 7/21/2010 5:20:59 PM, @p3 = 'jpregg', @p4 = 'tex0r', @p5 = 0, @p6 = True, @p7 = 7/21/2010 5:21:00 PM, @p8 = '//server/yourmom', @p9 = NULL, @p10 = 5898, @p11 = NULL, @p12 = 0
NHibernate: INSERT INTO Languages (Name) VALUES (@p0); select SCOPE_IDENTITY();@p0 = 'Spanglish'
NHibernate: INSERT INTO Tracks_Credits (TrackID, Index, CreditID) VALUES (@p0, @p1, @p2);@p0 = 20, @p1 = 0, @p2 = 19
sospecho que la línea problema es el siguiente (me quede en SQL y sale el mismo error):
NHibernate: INSERT INTO Tracks_Credits (TrackID, Index, CreditID) VALUES (@p0, @p1, @p2);@p0 = 20, @p1 = 0, @p2 = 19
pero lo que me está arrojando aquí es que la tabla no tiene una columna "Índice"
tampoco hay ningún "Índice" en ninguna parte de mis mapas. ¿Alguien ha visto esto?
¿por qué arroja el 'índice' allí?
aquí es el mapa de crédito:
public class CreditMap: ClassMap<Credit>
{
public CreditMap()
{
Table("Credits");
Id(x => x.ID, "CreditId");
Map(x => x.Email, "Email")
.Length(1000);
Map(x => x.Location, "Location")
.Length(1000);
Map(x => x.Name, "Name")
.Length(1000);
Map(x => x.Role, "Role")
.Length(1000);
}
}
y aquí es el mapa de la pista:
public class ForeignEntityTypeFilter : FilterDefinition
{
public ForeignEntityTypeFilter()
{
WithName("ForeignEntity")
.AddParameter("IsType", NHibernate.NHibernateUtil.String);
}
}
public class TrackMap: ClassMap<Track>
{
public TrackMap()
{
Table("Tracks");
Id(x => x.ID, "TrackId");
Map(x => x.ContainsSamples);
Map(x => x.Description);
Map(x => x.HasExplicitLyrics);
Map(x => x.IsCover);
Map(x => x.Lyrics);
Map(x => x.Name)
.Length(1000);
Map(x => x.OrderIndex);
References<Genre>(x => x.Genre, "GenreID");
HasManyToMany<Credit>(x => x.Credits)
.ChildKeyColumn("CreditID")
.AsList()
.ParentKeyColumn("TrackID")
.Table("Tracks_Credits")
.Not.Inverse()
.Cascade.SaveUpdate();
HasMany<TrackImage>(x => x.Images)
.Table("Images")
.KeyColumn("ForeignEntityID")
.ApplyFilter<ForeignEntityTypeFilter>("'Track' == ForeignEntityType")
.Not.Inverse()
.Cascade.SaveUpdate();
HasManyToMany<Language>(x => x.Languages)
.ChildKeyColumn("LanguageID")
.AsList()
.ParentKeyColumn("TrackID")
.Table("Tracks_Languages")
.Not.Inverse()
.Cascade.SaveUpdate();
HasManyToMany<MediaFile>(x => x.MediaFiles)
.ChildKeyColumn("MediaFileID")
.AsList()
.ParentKeyColumn("TrackID")
.Table("Tracks_MediaFiles")
.Not.Inverse()
.Cascade.SaveUpdate();
}
}
¿Se puede publicar el mapeo y la clase para Tracks_Credits? También el código que usaste antes de llamar a guardar(). –
Agregue la ruta y el mapa de crédito. no hay un mapa Tracks_Credits porque es simplemente un HasManyToMany –