Как обрабатываются внешние ключи и идентификаторы Guid в LINQ to Entities?
Вопрос
Просто использую это в качестве примера...
Вот столбцы в моей таблице 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);
Несколько вопросов...
Есть ли что-то особенное в работе с внешними ключами, что мне нужно знать, или я могу назначить это так же, как я сделал с адресом или номером телефона?
Идентификатор пользователя - это идентификатор Guid, и мне нужно извлечь его из идентификатора текущего пользователя.Кажется, я не могу получить доступ к классу членства или классу пользователя (это библиотека C #, поэтому я предполагаю, что ей каким-то образом нужна ссылка, но мой проект уже ссылается на мою библиотеку, поэтому я не могу ссылаться на нее, иначе у меня будет циклическая зависимость)
Я не совсем понимаю, как обращаться с идентификаторами 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, и фреймворк присвоит вам правильный идентификатор.