У меня есть сопоставления "многие-к-одному", но связь "один-ко-многим" между location и location_times продолжает давать мне ошибку.
Я все время получаю эту ошибку:
в этой строке кода:
Сопоставления выглядят так:
Местоположение:
public virtual IList<LocationTimes> LocationTimes { get; set; }
public virtual int locationID { get; set; }
public virtual IList<LocationTimes> LocationTimes { get; set; }
public Location()
{
LocationTimes = new List<LocationTimes>();
}
Карта расположения:
public class LocationMap : ClassMap<Location>
{
public LocationMap()
{
Table("Locations");
Id(x => x.locationID).Column("ID");
HasMany(x => x.LocationTimes)
.Inverse()
.Cascade.All();
Таблица местоположений:
CREATE TABLE [dbo].[Locations](
[ID] [int] IDENTITY(1,1) NOT NULL
...
CONSTRAINT [PK_Locations_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
LocationTimes:
public class LocationTimes
{
public virtual int ID { get; set; }
public virtual Location Location { get; set; }
}
LocationTimesMap:
public class LocationTimesMap : ClassMap<LocationTimes>
{
public LocationTimesMap()
{
Table("Location_Times");
Id(x => x.ID);
References(x => x.Location).Column("LID");
}
}
Таблица "Location_times"
CREATE TABLE [dbo].[Location_Times](
[ID] [int] IDENTITY(1,1) NOT NULL,
[LID] [int] NULL,
[EHStart] [int] NULL,
[EHEnd] [int] NULL,
[EHSell] [money] NULL,
CONSTRAINT [PK_Location_Times_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Полное сообщение об ошибке:
«{» не удалось инициализировать коллекцию: [WhygoDomain.Location.LocationTimes # 4] [SQL: ВЫБРАТЬ locationti0_.Location_id как Location4
, locationti0_.ID как ID1_, locationti0_.ID как ID1_0_, locationti0_.LID как LID1_0_, locationti0_.EH EHStart1_0_ FROM Location_Times locationti0_ WHERE locationti0_.Location_id =?] "}"public virtual IList<LocationTimes> LocationTimes { get; set; } public virtual int locationID { get; set; } public virtual IList<LocationTimes> LocationTimes { get; set; } public Location() { LocationTimes = new List<LocationTimes>(); }
Я вижу из sql в сообщении об ошибке, что он действительно ищет locationti0_.Location_id, которого, как я знаю, не существует. Но я не знаю, зачем он это ищет.
References(x => x.Location).Column("LID");
наReferences(x => x.Location, "LID");
26.01.2012.KeyColumn('LID')
в HasMany вLocationMap
вот так -HasMany(x => x.LocationTimes).KeyColumn("LID").Inverse().Cascade.All();
26.01.2012