У меня проблема с беглым отображением nhiberbate двух таблиц в один класс.
У меня есть следующая схема базы данных:
TABLE dbo.LocationName
(
LocationId INT PRIMARY KEY,
LanguageId INT PRIMARY KEY,
Name VARCHAR(200)
)
TABLE dbo.Language
(
LanguageId INT PRIMARY KEY,
Locale CHAR(5)
)
И хочу построить следующее определение класса:
public class LocationName
{
public virtual int LocationId { get; private set; }
public virtual int LanguageId { get; private set; }
public virtual string Name { get; set; }
public virtual string Locale { get; set; }
}
Вот мой класс картирования:
public LocalisedNameMap()
{
WithTable("LocationName");
UseCompositeId()
.WithKeyProperty(x => x.LanguageId)
.WithKeyProperty(x => x.LocationId);
Map(x => x.Name);
WithTable("Language", lang =>
{
lang.WithKeyColumn("LanguageId");
lang.Map(x => x.Locale);
});
}
Проблема в том, что сопоставление поля Locale происходит из другой таблицы, в частности, что ключи между этими таблицами не совпадают. Всякий раз, когда я запускаю приложение с этим сопоставлением, я получаю следующую ошибку при запуске:
Внешний ключ
(FK7FC009CCEEA10EEE: Язык
[LanguageId])) должен иметь одинаковый номер
столбцов в качестве основного ссылочного
ключ (LocationName [LanguageId,
LocationId])
Как мне указать nHibernate для сопоставления LocationName с языком, используя только поле LanguageId?