Примечание: протестировано только на проекте NH2
Что ж, вы, вероятно, захотите пожевать дверь, как только прочитаете это, но причина TLDR в том, что * 1005Столбцы * и Spring_id
в вашей таблице Story
являются не избыточными - они существуют для отношений HasMany(x => x.Stories)
в ваших SpringMap и ProductMap.Просто они имеют то же соглашение об именах, что и CardMap
References(x => x.Product
и References(x => x.Sprint)
.
Подтвердите это для себя, закомментировав ProductMap.cs:24-25
и SprintMap.cs:22
и перестроив.
Если вышеупомянутое не имеет смысла, дайте мне знать, и я постараюсь объяснить более подробно.
Итак, должно нормально работать как есть.Если вы хотите уточнить столбцы, вы можете явно определить имена столбцов следующим образом:
ProductMap.cs
HasMany(p => p.Stories)
.KeyColumn("ProductOwner_id")
.Inverse();
SprintMap.cs
HasMany(s => s.Stories)
.KeyColumn("SprintOwner_id")
;
CardMap.cs
References(c=>c.Product)
.Column("Product_id")
.Not.Nullable();
References(c=>c.Sprint)
.Column("Sprint_id")
.Nullable();
Здесь я предполагаю, что отношения 1: N между Story и Product /Спринт является "владельцем".Вы бы хотели переименовать его в семантическом порядке.
Еще одна вещь. Я мог бы подумать, что последние изменения (изменения в CardMap.cs
) были бы ненужными - но они, по-видимому, по какой-то причине, или столбец Sprint_id
становится SprintOwner_id
.Я понятия не имею, почему это произойдет - я бы предположил, что это своего рода двунаправленное отношение, связанное с беглым / гибернатным компонентом, пошло наперекосяк, но я бы на это вложил очень мало денег.