Я использую Entity Framework 4.1 и пытаюсь создать отношение один ко многим. В моем программном обеспечении у меня есть классы UserEntity и RoleEntity. Каждый пользователь имеет одну роль, но одна роль может иметь много пользователей.
До сих пор мне удалось доставить данные из БД в UserEntity, за исключением связанного объекта RoleEntity. Свойство RoleId моего тестового пользовательского объекта имеет правильный RoleID, но свойство Role равно нулю.
Есть ли какая-то дополнительная конфигурация, которую мне нужно было бы написать до того, как свойство Role будет заполнено правильным RoleEntity?
[Table("Roles")]
public class RoleEntity
{
public long Id { get; set; }
public string Name { get; set; }
}
[Table("Users")]
public class UserEntity
{
public long Id { get; set; }
public string Password { get; set; }
public Int32 IsActive { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string LocalService { get; set; }
[ForeignKey("RoleEntity")]
public long RoleId { get; set; }
public virtual RoleEntity Role { get; set; }
public virtual ClientOrganizationEntity ClientOrganization { get; set; }
}
public class UserContext : DbContext
{
#region Constructor
public UserContext(DbConfigurationProvider dbConfigurationProvider)
: base(dbConfigurationProvider.ConnectionString)
{
if (dbConfigurationProvider == null)
throw new ArgumentNullException("dbConfigurationProvider");
Configuration.ProxyCreationEnabled = false;
}
#endregion
#region DbSets
public DbSet<UserEntity> Users { get; set; }
public DbSet<RoleEntity> Roles { get; set; }
public DbSet<ClientOrganizationEntity> ClientOrganizations { get; set; }
#endregion
}
Данные в таблице «Пользователи»:
Id Пароль пользователя Имя Фамилия Электронная почта LocalService IsActive RoleId ClientOrganizationId
1 foo 62cdb7020ff920e5aa642c3d4066950dd1f01f4d FirstName Фамилия te@s.t foobar.com 1 1 1
Таблица данных в ролях:
Id Name
1 Администратор
EDIT:
Вот как я получаю данные из DbContext:
var user = _dbContext.Users.FirstOrDefault(x => x.Id == 1);
var role = user.Role;