Entity Framework не загружает свойства навигации - PullRequest
0 голосов
/ 10 февраля 2012

Я использую EF с POCO для одного из моих проектов.

Контекст данных и документы созданы успешно, и я могу получить данные.Есть одна проблема: свойства навигации всегда равны нулю.

У меня есть два класса:

public class UserProfile {

public string Username { get; set; }
public int RoleId { get; set; }
public virtual SecurityRole SecurityRole { get; set; }

}

public class SecurityRole {

public int roleId { get; set; }
public string RoleDescription { get; set; }

}

public class DataContext : ObjectContext {

public ObjectSet<UserProfile> UserProfiles { get; set; }
public ObjectSet<SecurityRole> SecurityRoles { get; set; }

public DataContext() : base("name=datacontext_entities", "datacontext_entities") {

UserProfiles = CreateObjectSet<UserProfile>();
SecurityRole = CreateObjectSet<SecurityRole>();

}

}

База данных содержит объекты из userprofile и securityrole.Внешние ключи установлены.Я получаю доступ к этим элементам простым запросом linq: Db.UserProfile.FirstOrDefault(f => f.Username == username);, где Db - мой текстовый текст.

Весь объект профиля пользователя будет иметь данные, но свойство навигации SecurityRole всегда будет нулевым.

Я что-то упустил?

1 Ответ

1 голос
/ 10 февраля 2012

Я думаю, что для первой работы кода EF у вас должно быть свойство Id вашего класса SecurityRole как SecurityRoleId или что-то в этом роде или применить к нему атрибут [Key]. Это должно работать тогда

public class SecurityRole 
{
    [Key]
    public int roleId { get; set; }
    public string RoleDescription { get; set; }

}

или

public class SecurityRole 
{
    public int SecurityRoleId { get; set; }
    public string RoleDescription { get; set; }

}
...