Loading...
mirela95 avatar mirela95 56 Точки

Композитен ключ със string и int

Здравейте,

Някой може ли да ми обясни как да направя междинната таблица CountriesContinents от упражненията Introduction to .NET Core and EF Core, задачата Footbal Betting, след като по условие Country има ключ string, а Continents int? 

0
C# Web Development Basics
RoYaL avatar RoYaL Trainer 6849 Точки

Здравей,

Това не е композитен ключ. Композитен ключ щеше да е ако две колони от една таблица правят един ключ (примерно първичен ключ).

В случая са си два отделни външни ключа - CountryId е същият тип какъвто е Id в Countries (дали е string не съм гледал). ContinentId трябва да е същият тип, какъвто е Id в Continents. Това е. Едното се връзва към едната таблица, другото към другата.

3
Pilgrimage avatar Pilgrimage 515 Точки

Според мен не би трябвало да имаш проблем да си направиш композитен Primary Key от int и string.
Разбира се, поначало не е добра идея да имаш за PKey string, но ако не искаш да си пипнеш таблицата и да добавиш отделна int колона за Key, а старата string да я обявиш за Unique, би трябвало да стане и по твоят начин.

0
26/09/2017 13:17:41
mirela95 avatar mirela95 56 Точки

Абе то аз не искам, но така пише по условие. :D Ще видя какво ще измисля. :) 

0
Lyubozar avatar Lyubozar 47 Точки

CountryId в междинната таблица трябва да ти е string както е Id в таблицата Countries.

В OnModelCreating трябва да е това:

builder.Entity<CountryContinent>()
                .HasKey(cc => new { cc.CountryId, cc.ContinentId });

0
26/09/2017 19:59:42
RoYaL avatar RoYaL Trainer 6849 Точки

Не съм сигурен, че има нужда от отделно Entity за Many2Many релацията. Дали няма да стане, ако кажеш, че всяка държава HasMany Континенти, и всеки континент HasMany Държави?

0
Lyubozar avatar Lyubozar 47 Точки

Задачата изисква отделна таблица, иначе отделно трябва да се направят и връзките в DbContexta

0
mirela95 avatar mirela95 56 Точки

И на мен по-удачно ми се струват другите начини, но в крайна сметка я направих както пише по условие. 

Благодаря на всички! 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.