【发布时间】:2012-02-06 16:26:39
【问题描述】:
我很难理解某种代码优先关系。我有三个实体:Group、User、GroupPermission。 GroupPermission 实体保存有关与组相关的权限的信息。共有三种权限:leader、editor、user。 GroupPermission 表应包括主键 ID 和权限名称。然后我想要一个看起来像这样的关系表:Id - Group_Id - User_Username - GroupPermission_Id。可以有多个组、多个用户、多个权限。我有很多示例可以帮助我制作单个关系表,但我找不到包含多个关系的任何内容。
这是我的实体...
用户:
public class User
{
[Key, StringLength(EntityLength.UsernameLength)]
public string Username { get; set; }
[Required, StringLength(EntityLength.NameLength)]
public string FirstName { get; set; }
[Required, StringLength(EntityLength.NameLength)]
public string LastName { get; set; }
[Required, StringLength(EntityLength.Email)]
public string Email { get; set; }
public bool Active { get; set; }
public DateTime DateCreated { get; set; }
public virtual UserPermission UserPermission { get; set; }
public virtual ICollection<Group> Groups { get; set; }
public virtual ICollection<Project> Projects { get; set; }
public virtual ICollection<Issue> Issues { get; set; }
public virtual ICollection<GroupPermission> GroupPermissions { get; set; }
public string FullName
{
get { return FirstName + ' ' + LastName; }
}
}
组:
public class Group
{
[Key]
public int Id { get; set; }
[Required, StringLength(EntityLength.GenericLength)]
public string Name { get; set; }
[Required, StringLength(EntityLength.DescriptionLength)]
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Project> Projects { get; set; }
public virtual ICollection<GroupPermission> GroupPermissions { get; set; }
}
组权限:
public class GroupPermission
{
[Key]
public int Id { get; set; }
[StringLength(EntityLength.GenericLength)]
public string Name { get; set; }
public int GroupId { get; set; }
public virtual ICollection<Group> Groups { get; set; }
public int UserId { get; set; }
public virtual ICollection<User> Users { get; set; }
public enum Permission
{
Leader = 1,
Editor = 2,
User = 3
}
}
使用此结构创建表时,我得到一个 GroupPermissions 表,其中包含 Id、Name、GroupId 和 UserId。此表只需为 Id 和 Name。然后它创建一个包含 GroupPermissions_Id 和 User_Username 的 GroupPermissionUsers 表。这是应该是 Id、Group_Id、User_Username、GroupPermission_Id 的表。
是否有人有任何提示来完成此操作,或者我是否在考虑错误的设计?
【问题讨论】:
标签: asp.net-mvc-3 entity-framework-4.1 ef-code-first