我曾经自己生成所有助手表,例如用于多对多关系或POCO中的关系ID的,但是现在我希望EF来处理它们。不过,我现在认为这并不是一个好主意。
问题:当我尝试获取特定用户的所有时,它会为用户所在的每个用户组生成个查询。
在这里,我通过简单地指出将成为而不是来克服了这个问题。现在我不能这样做,因为EF不会映射它,它必须是。
代码:
问题:当我尝试获取特定用户的所有时,它会为用户所在的每个用户组生成个查询。
在这里,我通过简单地指出将成为而不是来克服了这个问题。现在我不能这样做,因为EF不会映射它,它必须是。
代码:
public class User
{
...
public virtual ICollection<Usergroup> Usergroups { get; set; }
public IEnumerable<UserField> Fields
{
get
{
var fields = this.Usergroups.SelectMany(x => x.UsergroupDynamicFields); // N + 1 for every Usergroup
foreach (var field in fields)
{
yield return new UserField
{
Name = field.Name
};
}
}
}
}
Database
无法将类型为'System.Collections.Generic.HashSet'1[Api.Models.Users.Usergroup]'的对象强制转换为类型'System.Data.Objects.DataClasses.EntityCollection'1[Api.Models.Users.Usergroup]'。
- Stanpublic DbSet<User> Users { get; set; }
等等。 - StanEntityCollection<T>
仅在更改跟踪可能时使用,而更改跟踪是否可能取决于您如何配置类和其他属性。我会在可以检查相关细节时更新我的答案。 - user743382