2

就用这个作为一个例子...LINQ to Entities如何处理外键和Guids?

下面是我的用户配置表中的列:
简档(主键)
用户ID (外键)
地址
******中国

现在,当我想使用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. UserId是一个Guid,我需要从当前用户的UserId中检索它。我似乎无法获得成员资格类或用户类(这是一个C#库,所以我猜它需要一个参考莫名其妙,但我的项目已经引用我的图书馆,所以我不能回头或我会有一个循环依赖)

  3. 我不太明白如何处理Guids。在实施getProfileByUserName(string userName),这里是我的问题......

第一关我不能检索用户名,这里是我的尝试:

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

但它说我不能把它转换为由于某种原因Guid。

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

谢谢
马特

回答

1

如果数据库包含外键关系的适当限制,应该有你的UserProfile类中的成员,指向一个User对象。名字可能有点奇怪,如UserProfileUser或类似的东西。

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

+0

所以我甚至不必处理id,只是对象本身? – Matt 2009-06-23 17:34:59