- У меня есть класс с именем ... "ClassA", в котором первичный ключ имеет int ID.
- У меня есть класс с именем "ClassB", у которого есть составной первичный ключ, образованный Id ClassAId, который является ссылкой на ClassA, и другой int с именем Version.
- И у меня есть класс с именем C, который имеет int ID в качестве первичного ключа, и внешний ключ к ClassB, состоящий из ClassBId, ClassAId и Version.
Я не могу найти способ сопоставить это с Fluent NHibernate.
Мои определения классов такие: я опущу Equals и GetHa sh part -:
public class ClassA
{
public virtual int Id { get; set; }
}
public class ClassB
{
public virtual int Id { get; set; }
public virtual ClassA ClassA { get; set; }
public virtual ICollection<ClassC> ClassCCollection { get; set; }
}
public class ClassC
{
public virtual int Id { get; set; }
public virtual ClassB ClassB { get; set; }
}
И мои конструкторы отображения:
public ClassAMap()
{
Table("ClassA");
Id(c => c.Id);
}
public ClassBMap()
{
Table("ClassB");
CompositeId()
.KeyProperty(c => c.Id)
.KeyReference(c => c.ClassA, "ClassAId")
.KeyProperty(c => c.Version);
HasMany(c => c.Edges)
.Inverse()
.Cascade.All().AsList().KeyColumns.Add("ClassBId", "ClassAId", "Version");
}
public ClassCMap()
{
Table("ClassC");
Id(c => c.Id);
References(n => n.ClassB).Columns("ClassBId, ClassAId, Version").Not.Nullable();
}
Но когда я пытаюсь запустить приложение, SchemaUpdate сообщает, что
FKUnmatchingColumnsException: Внешний ключ (FK_6C7456E0: Class C [ClassBId, ClassAId, Version])) должен иметь то же количество столбцов, что и первичный ключ, на который есть ссылка (ClassB [Id, ClassAId, Version])
Может быть, я не очень хорош в математике, но кажется, что 3 столбца количество столбцов равно 3. Я что-то упустил? Спасибо.