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
C# 在实体框架中使用外键访问数据的查询是什么?_C#_Entity Framework - Fatal编程技术网

C# 在实体框架中使用外键访问数据的查询是什么?

C# 在实体框架中使用外键访问数据的查询是什么?,c#,entity-framework,C#,Entity Framework,我想列出表sale的数据,使用外键userId访问用户的名称,使用上下文执行此操作的正确方法是什么 using (var context = new AppDbContext()) { var comic = context.sale.Select(d => d); } public class sale { public int saleId { get; set; } public DateTime date { get; set; } public

我想列出表sale的数据,使用外键userId访问用户的名称,使用上下文执行此操作的正确方法是什么

using (var context = new AppDbContext())
{
    var comic = context.sale.Select(d => d);
}

public class sale
{
    public int saleId { get; set; }
    public DateTime date { get; set; }
    public int userId { get; set; }
}

public class user
{
    public int userId { get; set; }
    public string name { get; set; }
    public string surname { get; set; }
    public string email { get; set; }
    public string password { get; set; }
}
背景:

modelBuilder.Entity<sale>()
            .HasOne<user>()
            .WithMany()
            .HasForeignKey(p => p.userId);
modelBuilder.Entity()
.HasOne()
.有很多
.HasForeignKey(p=>p.userId);

您需要更改类以添加导航属性:

public class sale
{
    public int saleId { get; set; }
    public DateTime date { get; set; }
    public int userId { get; set; }
    public user user { get; set; }
}

public class user
{
    public int userId { get; set; }
    public string name { get; set; }
    public string surname { get; set; }
    public string email { get; set; }
    public string password { get; set; }
    public ICollection<sale> sales { get; set; } = new HashSet<sale>();
};

您需要更改类以添加导航属性:

public class sale
{
    public int saleId { get; set; }
    public DateTime date { get; set; }
    public int userId { get; set; }
    public user user { get; set; }
}

public class user
{
    public int userId { get; set; }
    public string name { get; set; }
    public string surname { get; set; }
    public string email { get; set; }
    public string password { get; set; }
    public ICollection<sale> sales { get; set; } = new HashSet<sale>();
};

要在没有显式连接的情况下“顺利”完成,您需要在
sale
类中创建类型为
user
的导航属性。然后,您将能够执行
context.sales.Include(s=>s.User).ToList()
若要在不显式联接的情况下“顺利”执行,您需要在
sale
类中创建
User
类型的导航属性。然后您将能够执行
context.sales.Include(s=>s.User).ToList()
这样做会添加sale表,它会留下一列userId和userId1,是否可以?我应该在userId1中保存哪些数据?它不应该添加额外的列,您使用的是哪个版本的EF?这样做会添加sale表,它留下了一列userId和userId1,可以吗?我应该在userId1中保存什么数据?它不应该添加额外的列,您使用的是哪个版本的EF?
var user = context.sale.Include(a => a.user)...