首页 > 解决方案 > 如何使用外键访问关系表上不同变量的值

问题描述

假设我的数据库中有两个表。我想访问我的第二个表的另一个变量,该变量从主表的变量映射到外键。这是否可能从模型中的 LookUp 表中到达另一个变量的值。我用谷歌搜索,但从未找到解决方案。

我想问一下模型如何自动做到这一点?这些是我的表格模型;

A: id:1, LookUpID:1;

查找:id:2,名称:“某个名称”

结果将如下所示;

{ A:{ id: 1, LookUp: "some name" } }

原谅我的英语,提前谢谢你。

[Table("A")]
public class A
{
   [Key]
   public int id {get; set;}
   [Column("LookUp")]
   public int LookUpID {get; set;}

   [ForeignKey="LookUpID"]
   public virtual LookUp lookup {get; set;}
}

public class LookUp
{
   [Key]
   public int id {get; set;}
   public string name {get; set;}

}

标签: c#entity-frameworkodata

解决方案


看起来投影就是你所追求的。要返回具有 ID 和查找名称的对象:

public class AViewModel
{
    public int Id { get; set; }
    public string Lookup { get; set; }
}

然后

var models = context.As.Select(a => new AModel { Id = a.Id, Lookup = a.Lookup.Name }).ToList();

这可以序列化为 JSON,如下所示:

{ Id: 1, Lookup: "test message" }

例如,如果您只想在本地处理详细信息而不返回函数外部的数据,则可以投影到匿名类型:

var models = context.As.Select(a => new { Id = a.Id, Lookup = a.Lookup.Name }).ToList();

推荐阅读