Pergunta

Apenas usando isso como um exemplo ...

Aqui estão as colunas na minha mesa UserProfile:
ProfileId (chave primária)
UserID (chave estrangeira)
endereço
PhoneNumber

Agora, quando eu quero adicionar um novo usuário ao banco de dados usando LINQ to Entities, aqui é o que eu estou fazendo:

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

_myDB.AddToUserProfiles(profileToAdd);

Algumas perguntas ...

  1. Existe especial nada sobre como lidar com chaves estrangeiras que eu preciso saber, ou eu posso atribuí-lo assim como eu fiz com endereços ou PhoneNumber?

  2. O UserId é um Guid, e eu preciso recuperá-lo de UserId do usuário atual. Eu não consigo obter acesso a classe Membership ou classe de usuário (Este é um # Biblioteca C então eu estou supondo que ele precisa de uma referência de alguma forma, mas meu projeto já está referenciando minha biblioteca para que eu não posso voltar de referência ou eu tem uma dependência circular)

  3. Eu não entendo muito bem como lidar com Guids. Ao implementar getProfileByUserName(string userName), aqui está o meu problema ...

primeiro fora eu não posso recuperar o UserID, aqui está o que eu tentei:

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

Mas ele diz que eu não posso lançá-lo para um Guid por algum motivo.

Se você puder fornecer qualquer visão a qualquer destas perguntas que eu agradeceria muito!

Obrigado,
Matt

Foi útil?

Solução

Se o banco de dados contém as restrições adequadas para o relacionamento de chave estrangeira, não deve ser um membro em sua classe UserProfile, que aponta para um objeto User. O nome pode ser um pouco estranho, como UserProfileUser ou algo parecido.

No entanto, você pode alterar esse nome no diagrama. Basta definir um ponteiro para o objeto de entidade de usuário eo quadro vai atribuir a identificação correta para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top