我有类似下面的类:实体框架代码优先布尔外键
public sealed class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; private set; }
[Required] public string GroupId { get; set; }
[Required] public bool IsAdmin { get; set; }
}
而另:
public sealed class Group
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; private set; }
[ForeignKey("GroupId")]
public List<User> Users { get; set; }
}
的User
类的IsAdmin
属性表示是否该用户是管理员。我想要做的是一个新的属性添加到Group
:
public List<User> Admins { get; set; }
这个新的列表将包含是他们组的管理员的所有用户,这意味着他们的财产IsAdmin
具有价值true
。我已经使用自定义的getter此属性,像这样考虑:
public List<User> Admins
{
get
{
return this.Users.Where(user => user.IsAdmin);
}
}
不过,我想知道,如果实体框架可以照顾这对我来说。在我的脑海中,我可以想像它使用IsAdmin
的方式类似于用于Users
列表,其中具有User.GroupId = "foo"
的每个用户都包含在Group.Id = "foo"
组的Users
列表中。
所以我的问题是,我如何告诉EF使用用户的IsAdmin
属性作为外键填充Admins
?
你应该坚持财产'清单管理员'。当你已经有了一些可行的东西时,为什么复杂化呢?简单更好。 –
JuanR
由于管理员“是”用户,您可以使用[继承](http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx) –
*我想知道如果实体框架可以为我照顾这个*目前的答案没有明确说明它,但是这个问题的答案是“否”。 –