【发布时间】:2019-03-06 05:37:50
【问题描述】:
我正在花时间学习 EF(特别是第 6 版)。
我在 MSSQL 中创建了两个表,并将 EF6 链接到创建 EF 模型框架的数据库。
然后我在代码中创建了这些类。我的愿望是用“UserDatas”的项目列表拉出一行(是的,我知道它拼写错误)。
考虑这段代码:
public class user
{
[Key]
public int pkID;
public string ForeignCode;
public string UserName;
public virtual List<UserData> UserDatas { get; set; }
}
public class UserData
{
[Key]
public int pkID;
public int fkUserID;
public string ColumnName;
public string ColumnValue;
}
class Program
{
static TestData db = new TestData();
static void Main(string[] args)
{
var record = db.tblUsers.Select(x => new { x.UserName, x.pkID }).FirstOrDefault();
var record2 = db.tblUsers.Include(x => x.tblUserDatas).ToList();
Console.ReadLine();
}
}
第一个查询只是拉取 tblUsers 表中的主记录的测试。
第二个查询是我试图提取与该用户相关的所有字段,包括名字、姓氏、地址等...
当我在 Console.Readline() 上设置断点时会发生什么,我看到为 record2 列出了 5 行。 “用户”类在这些行中的每一行中都是重复的。我期待看到仅列出一次,其中包含“UserDatas”的项目列表。
如果一行包含“UserDatas”列表,我怎样才能让这个查询按预期通过?
同样,这仅用于学习目的,因此不必担心数据以及这是否是存储数据的最佳方式。
【问题讨论】:
标签: c# entity-framework entity-framework-6