Особенности в C # для внешних ключей SQLCE - PullRequest
1 голос
/ 14 мая 2011

Я знаю, как сделать запрос SQL, чтобы добавить внешние ключи, подключиться к базе данных и получить данные в C # и тому подобное.Но после долгих часов поиска в Google я не могу найти какие-либо функции (или классы, методы, API и т. Д.) В C #, которые имеют какое-либо отношение к внешнему ключу.

Вернувшись, когда я был в Rails, если две таблицы имеют отношения, я легко могу получить доступ к дочерней таблице через родительскую таблицу с помощью Teacher [0] .Classes.Last .Но эти методы, кажется, отсутствуют в C #?Я прав?

Я работаю с C #, SQLCE и WPF.

У меня есть две таблицы, которые имеют отношение один к одному.Но все данные, включая ссылочный ключ, вставляются вручную (например, эта строка, вставка «1», эта строка вставка «5» и т. Д.), И чтобы найти строки в дочерней таблице, соответствующие идентификатору родительской таблицы, я простодолжны сделать оператор if в C #.

Так что для меня внешний ключ - это просто еще один столбец int.Я не понимаю, что на самом деле делает ссылка, или это просто соглашение об именах?Просто читатель кода видит ссылку и узнает, что есть связь, но внешний ключ на самом деле ничего не делает?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Вернувшись, когда я был в Rails, если две таблицы имеют отношения, я легко могу получить доступ к дочерней таблице через родительскую таблицу с помощью Teacher [0] .Classes.Last, но эти методы, по-видимому, отсутствуют в C #?

Вы можете сделать нечто подобное с Entity Framework и многими другими ORM.

Так что, по сути, Foreign Key для меня - это просто еще один столбец int. ... Просто читатель кода видит ссылку и признает, что есть связь, но внешний ключ на самом деле ничего не делает?

Правильно - значение внешнего ключа теряет значение, когда вы покидаете базу данных. Вместо этого нормальным является наличие вложенных объектов. Например, у вас может быть объект Customer, который может содержать объект Address. Объект Address может также содержать его значение ключа foriegn, но обычно вы не будете использовать его в коде C # (если вы не выполняете с ним что-то вроде запроса LINQ) - вы будете использовать значение ключа foriegn, как только вернетесь к база данных.

0 голосов
/ 14 мая 2011

Внешний ключ представляет отношение между объектами в вашей модели Домена.Он обеспечивает целостность.

(В некоторых базах данных внешние ключи также могут ускорять запросы, поскольку оптимизатор запросов может использовать эту информацию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...