LINQ to Entities中如何处理外键和Guids?

时间:2009-06-23 17:16:06

标签: asp.net-mvc entity-framework linq-to-entities foreign-keys repository-pattern

仅以此为例......

以下是我的UserProfile表中的列:
   ProfileID (主键)
   UserID (外键)
   地址
   ******中国

现在,当我想使用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. 我不太明白如何处理Guids。在实施getProfileByUserName(string userName)时,这是我的问题......

  4. 首先我无法检索UserID,这是我尝试的内容:

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

    但它说我不能因为某种原因把它投到Guid上。

    如果您能对这些问题提供任何见解,我将不胜感激!

    谢谢,
    马特

1 个答案:

答案 0 :(得分:1)

如果数据库包含外键关系的正确约束,则UserProfile类中应该有一个指向User对象的成员。名称可能有点奇怪,例如UserProfileUser或类似的东西。

但是,您可以在图表中更改此名称。只需设置一个指向用户实体对象的指针,框架就会为您分配正确的ID。