Как обрабатываются внешние ключи и идентификаторы Guid в LINQ to Entities?

StackOverflow https://stackoverflow.com/questions/1033932

Вопрос

Просто использую это в качестве примера...

Вот столбцы в моей таблице UserProfile:
Профиль ( ProfileID ) (Первичный ключ)
Идентификатор пользователя (Внешний ключ)
Адрес
Номер телефона

теперь, когда я хочу добавить нового пользователя в базу данных с помощью LINQ to Entities, вот что я делаю:

UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */

_myDB.AddToUserProfiles(profileToAdd);

Несколько вопросов...

  1. Есть ли что-то особенное в работе с внешними ключами, что мне нужно знать, или я могу назначить это так же, как я сделал с адресом или номером телефона?

  2. Идентификатор пользователя - это идентификатор Guid, и мне нужно извлечь его из идентификатора текущего пользователя.Кажется, я не могу получить доступ к классу членства или классу пользователя (это библиотека C #, поэтому я предполагаю, что ей каким-то образом нужна ссылка, но мой проект уже ссылается на мою библиотеку, поэтому я не могу ссылаться на нее, иначе у меня будет циклическая зависимость)

  3. Я не совсем понимаю, как обращаться с идентификаторами Guid.При внедрении getProfileByUserName(string userName), вот в чем моя проблема...

во-первых, я не могу получить идентификатор пользователя, вот что я попробовал:

Guid currUser = (Guid)from user in _ myDB.aspnet_Users
                             where user.UserName == userName
                             select new { user.UserId };

Но там написано, что по какой-то причине я не могу преобразовать его в Guid.

Если вы можете дать какой-либо ответ на любой из этих вопросов, я был бы вам очень признателен!

Спасибо,
Мэтт

Это было полезно?

Решение

Если база данных содержит надлежащие ограничения для связи с внешним ключом, в вашем UserProfile класс, который указывает на User объект.Название может быть немного странным, например UserProfileUser или что-то в этом роде.

Однако вы можете изменить это имя на диаграмме.Просто установите указатель на объект user entity, и фреймворк присвоит вам правильный идентификатор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top