EF4 Code First: как добавить связь без добавления навигации property

Как мне определять отношения с помощью Code First, но без использования каких-либо свойств навигации?

Ранее я определял «Один-многие» и «Многие-многие», используя свойства навигации на обоих концах отношения. И соответствующие отношения создаются в базе данных. вот урезанная версия того, как выглядят классы (для простоты я преобразовал отношения «Многие-многие» в «один-многие»).

public class User 
{
    public string UserId { get; set; }
    public string PasswordHash { get; set; }
    public bool IsDisabled { get; set; }
    public DateTime AccessExpiryDate { get; set; }
    public bool MustChangePassword { get; set; }

    public virtual Role Role { get; set; }
}

public class Role
{
    public int RoleId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public virtual ICollection<User> Users { get; set; }
    public virtual ICollection<Right> Rights { get; set; }
}

public class Right
{
    public Guid RightId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public virtual Role Role { get; set; }
}

Однако, если я удалю свойства навигации, отношения не будут созданы. Вот как будут выглядеть классы.

public class User 
{
    public string UserId { get; set; }
    public string PasswordHash { get; set; }
    public bool IsDisabled { get; set; }
    public DateTime AccessExpiryDate { get; set; }
    public bool MustChangePassword { get; set; }

    public int Role RoleId { get; set; }
}

public class Role
{
    public int RoleId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class Right
{
    public Guid RightId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public int RoleId { get; set; }
}

обратите внимание, что вместо свойства навигации у меня есть первичный ключ связанной таблицы. На столе создается все, кроме отношений. Так как мне это сделать?

Кстати, я ' Я пробовал различные комбинации в методе OnModelCreating dbcontext, но безрезультатно. Любая помощь приветствуется!

Спасибо, Mel

15
задан Mel 7 March 2011 в 08:30
поделиться