bry*_*ich 7 nhibernate fluent-nhibernate
我有一个nhibernate解决方案,我正在尝试保存,但我收到此错误:
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.
Run Code Online (Sandbox Code Playgroud)
SQL如下:
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 = 'foo@foo.com', @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
Run Code Online (Sandbox Code Playgroud)
我怀疑问题是这样的(我在SQL中运行它并得到相同的错误):
NHibernate: INSERT INTO Tracks_Credits (TrackID, Index, CreditID) VALUES (@p0, @p1, @p2);@p0 = 20, @p1 = 0, @p2 = 19
Run Code Online (Sandbox Code Playgroud)
但是我在这里抛出的是该表没有"索引"列
我的地图中的任何地方都没有"索引".有没有人见过这个?
为什么要在那里抛出'指数'?
这是信用图:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是轨道地图:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4366 次 |
| 最近记录: |