Как обрабатываются внешние ключи и руководства в LINQ to Entities? - PullRequest
2 голосов
/ 23 июня 2009

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

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

Теперь, когда я хочу добавить нового пользователя в базу данных, используя 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. Есть ли что-то особенное в работе с внешними ключами, которое мне нужно знать, или я могу назначить его так же, как я делал это с Address или PhoneNumber?

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

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

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

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

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

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

Спасибо,
Matt

1 Ответ

1 голос
/ 23 июня 2009

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

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

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