I have an object Restaurant
that contains Menu
. Menu
contains MenuItems
.
Through the Code Entity Framework First, I created a database and saved one in it Restaurant
, which has one MenuItem
. I checked the database, and there is MenuItem
. However, when loading an object, Restaurant
it does not load.
I tried to implement an attribute [OnSerializing]
for an object Menu
(since this happens in a WCF application) in order to "force" load MenuItems
, but it had no effect. I also saw people recommend it [IncludeAttribute]
, but this attribute exists in two assemblies, none of which are present on my machine, as far as I can tell.
I tried to enable logging / tracing for the Entity framework, but so far without success.
Anyway, here is how I defined the data objects:
[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
{
[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
{
[OnDeserializing]
public void OnDeserializing(StreamingContext pContext)
{
Init();
}
public Restaurant()
{
Init();
}
private void Init()
{
Hours = new HoursOfOperation();
Menu = new Menu();
}
[DataMember(IsRequired = true)]
[Key]
public string Name
{
get;
set;
}
[DataMember]
public HoursOfOperation Hours
{
get;
set;
}
[DataMember]
public Menu Menu
{
get;
set;
}
}
And the database context is defined as:
public class RestaurantDirectory : DbContext
{
public DbSet<Restaurant> Restaurants { get; set; }
}
source
share