Как создать экземпляр объекта с навигационным свойством?Как создать экземпляр объекта с навигационным свойством?
В моем приложении я использую два класса для представления объекта Fruit и объекта Color, как определено ниже.
public class Fruit
{
public Fruit(int fruitId, string name, Color color)
{
FruitId = fruitId;
Name = name;
Color = color;
}
public int FruitId { get; set; }
public string Name { get; set; }
public Color Color { get; set; }
}
public class Color
{
public Color(int colorId, string name, List<Fruit> fruits)
{
ColorId = colorId;
Name = name;
Fruits = fruits;
}
public int ColorId { get; set; }
public string Name { get; set; }
public List<Fruit> Fruits { get; set; }
}
При создании экземпляра фруктов или цвета, я получаю свои данные из базы данных, которая довольно легко, но проблема в том, что я не понимаю, как заполнить данные для любых фруктов или навигационные свойства Цвет в ...
result = some_query_result_from_database...
Fruit f = new Fruit(result["FruitId"], result["Name"], ???);
Проблема:
Если я заменить ??? из приведенного выше кода со следующим:
new Color(some_colorId, some_colorName, some_list_of_fruits)
Где я могу получить some_list_of_fruits?
Update # 1:
Плоды и цвет объектов сверху представляет собой таблицы из базы данных, для этого примера я назвал это то же самое, так что объект Fruit есть фрукты таблицы двойника из базы данных и так делает Цвет объекта:
Table definition:
+----------+
| Fruit |
+----------+
| FruitId |
| Name |
| ColorId |
+----------+
|∞
|
|1
+----------+
| Color |
+----------+
| ColorId |
| Name |
+----------+
Table contents:
Fruits
+---------+--------+----------+
| FruitId | Name | ColorId |
+---------+--------+----------+
| 10 | Apple | 70 |
| 20 | Orange | 80 |
| 30 | Grapes | 90 |
+---------+--------+----------+
Colors
+----------+--------+
| ColorId | Name |
+----------+--------+
| 70 | Red |
| 80 | Orange |
| 90 | Violet |
+----------+--------+
Update # 2:
я проглядел на комментарий SriramSakthivel, я понял, SriramSakthivel я s также спрашивает, как я получаю данные для своих объектов. Так вот оно.
Для моего объекта Fruit:
string cs = some_connection_string;
MySqlConnection c = new MySqlConnection(cs);
try
{
c.Open();
string query = select_statement_to_get_fruits_from_db;
...then after that, I use MySqlDataReader to loop through the result to create fruit objects
}
Для моего цвета объекта, это просто те же самые шаги, как выше команды, за исключением, что на мой вопрос, я заменил его выбора оператора для получения цветных данных из базы данных.
Я могу» Посмотрите, как это ответственно, не понимая контекста, если «Цвет» нуждается в списке всех возможных Фруктов, вам нужно будет создать этот список перед созданием любого Fruit() или передать в пустой список и добавить к нему, когда были созданы все экземпляры Fruit. –
Это круговой зависимый конструктор. Цвет нуждается в 'List', Fruit нуждается в 'Color', и это никогда не закончится. Очень похоже на [проблема с куриным яйцом] (http://en.wikipedia.org/wiki/Chicken_or_the_egg). Не глядя на схему БД и то, как вы получаете данные, мы не можем много помочь. –
"Свойства навигации"? –