gpt4 book ai didi

wcf - 首先使用实体​​框架代码进行空集合

转载 作者:行者123 更新时间:2023-12-04 21:04:17 27 4
gpt4 key购买 nike

我有一个Restaurant对象,其中包含一个MenuMenu包含MenuItems

通过Entity Framework Code首先,我创建了一个数据库,并在其中存储了一个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; }
}

最佳答案

如果在WCF上使用Entity Framework 4.1,请将其放入DbContext构造函数中

this.Configuration.ProxyCreationEnabled = false;


如果您使用的是4.0,请使用 ContextOptions.ProxyCreationEnabled = false

关于wcf - 首先使用实体​​框架代码进行空集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com