Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用具有一对多关系的支持字段_Database_Entity Framework_Asp.net Core - Fatal编程技术网

Database 使用具有一对多关系的支持字段

Database 使用具有一对多关系的支持字段,database,entity-framework,asp.net-core,Database,Entity Framework,Asp.net Core,我有一种情况,我有一个实体,它应该公开一个用户列表,我只希望公开IEnumerable,而不是list。所以我使用一个支持字段来实现这一点。如下所示: public class Entity { private readonly List<User> invitedUsers = new List<User>() public IEnumerable<User> InvitedUsers => invitedUsers; pu

我有一种情况,我有一个实体,它应该公开一个用户列表,我只希望公开IEnumerable,而不是list。所以我使用一个支持字段来实现这一点。如下所示:

public class Entity
{
    private readonly List<User> invitedUsers = new List<User>()

    public IEnumerable<User> InvitedUsers => invitedUsers;

    public void AddInvitedUser(User user)
    {
        invitedUsers.Add(user);
    }
}
在modelbuilder中,我将导航属性设置为使用支持字段

var navigation = modelBuilder.Entity<Entity>().
        Metadata.FindNavigation(nameof(Entity.InvitedUsers));
        navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
var导航=modelBuilder.Entity()。
元数据.FindNavigation(name of(Entity.InvitedUsers));
navigation.SetPropertyAccessMode(PropertyAccessMode.Field);

据我所知,这是我应该做的一切,使这项工作。但是,每次我访问同一个实体时,它都不会加载持久化用户,甚至不会创建数据库的用户列(迁移已经完成)。我错过了什么?提前谢谢

我刚才也遇到了同样的问题。这就是为什么我能够为我的列表设置一个私人支持字段

public class Entity
{
    private readonly List<User> _invitedUsers = new List<User>()

    public IReadOnlyCollection<User> InvitedUsers => _invitedUsers;

    public void AddInvitedUser(User user)
    {
        invitedUsers.Add(user);
    }
}

您是否尝试过:
public IEnumerable InvitedUsers{get=>InvitedUsers;}
您是否知道@tschmit007没有帮助:-/可能是只读的有点太多。否../这很奇怪
public class Entity
{
    private readonly List<User> _invitedUsers = new List<User>()

    public IReadOnlyCollection<User> InvitedUsers => _invitedUsers;

    public void AddInvitedUser(User user)
    {
        invitedUsers.Add(user);
    }
}
var navigation = modelBuilder.Entity<Entity>().
    .HasMany(d => d.InvitedUsers)
                .WithOne(p => p.Entity) // notice that in your case this might be empty.. simply .WithOne()
                .HasForeignKey(d => d.EntityId)
      .Metadata.DependentToPrincipal.SetPropertyAccessMode(PropertyAccessMode.Field);