У меня есть Restaurant
объект, который содержит Menu
.Menu
содержит MenuItems
.
С помощью кода Entity Framework. Сначала я создал базу данных и сохранил в ней одну Restaurant
, в которой есть только MenuItem
.Я проверил базу данных, и MenuItem
там.Однако он не загружается при извлечении объекта Restaurant
.
Я попытался реализовать атрибут [OnSerializing]
для объекта Menu
(так как это происходит в приложении WCF), поэтомучто касается "принудительного" загрузки MenuItems
, но это не имело никакого эффекта.Я также видел людей, рекомендующих [IncludeAttribute]
, но этот атрибут существует в двух сборках, ни одна из которых не присутствует на моем компьютере, насколько я могу судить.
Я попытался включить ведение журнала /трассировка для платформы Entity, но пока безуспешно.
В любом случае, вот как я определил мои объекты данных:
[DataContract]
public class MenuItem
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public string Price { get; set; }
}
[CollectionDataContract]
public class ListOfMenuItem : List<MenuItem>
{
}
[DataContract]
public class Menu
{
/// <summary>
/// Alternate constructor, used during serialization operation.
/// </summary>
/// <param name="pContext"></param>
[OnDeserializing]
public void OnDeserializing(StreamingContext pContext)
{
Init();
}
public Menu()
{
Init();
}
private void Init()
{
MenuItems = new ListOfMenuItem();
}
[DataMember]
public int ID { get; set; }
[DataMember]
public ListOfMenuItem MenuItems
{
get;
set;
}
}
[DataContract]
public class Restaurant
{
/// <summary>
/// Alternate constructor, used during serialization operation.
/// </summary>
/// <param name="pContext"></param>
[OnDeserializing]
public void OnDeserializing(StreamingContext pContext)
{
Init();
}
public Restaurant()
{
Init();
}
private void Init()
{
Hours = new HoursOfOperation();
Menu = new Menu();
}
/// <summary>
/// Unique name and identifier for a restaurant.
/// </summary>
[DataMember(IsRequired = true)]
[Key]
public string Name
{
get;
set;
}
/// <summary>
/// What hours is the restaurant open.
/// </summary>
[DataMember]
public HoursOfOperation Hours
{
get;
set;
}
/// <summary>
/// What does the restaurant have to eat and drink.
/// </summary>
[DataMember]
public Menu Menu
{
get;
set;
}
}
И база данныхконтекст определяется как:
public class RestaurantDirectory : DbContext
{
public DbSet<Restaurant> Restaurants { get; set; }
}