У меня есть отношение от одного до многих, исходящее из хранимой процедуры. У меня есть несколько отношений от одного до многих в запросе, и я пытаюсь сопоставить эти поля с объектом C#. Проблема, с которой я сталкиваюсь, - это получение повторяющихся данных из-за отношений от одного до многих. Вот упрощенная версия моего кода:Как реализовать отношение один к другому
Вот это объекты класса:
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 для решения этого сопоставления, но нам не разрешено использовать любые ормы. Есть ли способ правильно развязать эти данные?
Может быть, вы можете использовать отражения для создания SQL и получить результат –
@JeffreyZhang Здравствуйте, я не знаю, что вы имеете в виду. Что такое отражение? И как бы построить sql me в картографии? Извините за вопросы, которые просто пытаются понять. – Luke101
Вам понадобятся 3 оператора "select". –