Я уделяю время изучению 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 (), я вижу 5 строк в списке для record2. Класс «user» дублируется в каждой из этих строк. Я ожидал увидеть его только один раз со списком элементов для «UserDatas».
Как получить такой запрос, как я ожидаю, с одной строкой, содержащей список «UserDatas»?
Опять же, это только для целей обучения, поэтому не беспокойтесь о данных и о том, является ли это лучшим способом их хранения.