У меня есть отношения от одного до многих, исходящие из хранимой процедуры. У меня есть несколько отношений от одного до многих в запросе, и я пытаюсь сопоставить эти поля с объектом С#. Проблема, с которой я сталкиваюсь, - это получение повторяющихся данных из-за отношений от одного до многих. Вот упрощенная версия моего кода:
Вот классы объектов:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public List<Color> FavoriteColors { get; set; }
public List<Hobby> Hobbies { get; set; }
public Person()
{
FavoriteColors = new List<Color>();
Hobbies = new List<Hobby>();
}
}
public class Color
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Hobby
{
public int Id { get; set; }
public string Name { get; set; }
}
Вот как я извлекаю данные:
using (SqlConnection conn = new SqlConnection("connstring.."))
{
string sql = @"
SELECT
Person.Id AS PersonId,
Person.Name AS PersonName,
Hobby.Id AS HobbyId,
Hobby.Name AS HobbyName,
Color.Id AS ColorId,
Color.Name AS ColorName
FROM Person
INNER JOIN Color on Person.Id = Color.PersonId
INNER JOIN Hobby on Person.Id = Hobby.PersonId";
using (SqlCommand comm = new SqlCommand(sql, conn))
{
using (SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection))
{
List<Person> persons = new List<Person>();
while (reader.Read())
{
Person person = new Person();
//What to do
}
}
}
}
Как вы можете видеть, для данного Лица может быть несколько цветов и хобби. Обычно я использую Entity Framework для решения этого сопоставления, но нам не разрешено использовать любые ормы. Есть ли способ правильно отключить эти данные?