c# - 在不重新创建模型的情况下在 WCF 服务中使用 Entity Framework 类

标签 c# wcf entity-framework

我有一个包含 edmx 的 dll 项目。在同一个解决方案中,我有一个 WCF 库项目,在这个项目中有一个接口(interface)和一个类来保存所有 OperationContracts。我注意到这对模型中的一张 table 效果很好。一旦我将另一个表添加到与第一个表有关系的 edmx 中,服务就会中断。所以,我已经缩小了我收到的错误的范围(在一般意义上)是由于我的 EF 类型之间的关系,更具体地说是在每个类中声明关系的方式......所以基本上我只是去了并在我的 Person 类中找到以下内容:

public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string DisplayName { get; set; }
public bool IsEmployee { get; set; }
public Nullable<int> OrganizationId { get; set; }
public virtual ICollection<Contact> Contacts { get; set; }

所以这导致我(我不知道为什么)尝试简单地删除与 Contact 和 POOF 的关系中的 virtual 关键字!!!!就像魔术一样,服务启动并运行,就像单个 Person 表是模型中唯一的类一样。 所以我的问题是……为什么?

为什么当我删除 virtual 关键字时 WCF 服务突然工作?这对于 Person 和 Contact 之间的关系意味着什么?

我有一个理论认为,发生这种情况的原因是因为现在通过删除 virtual 关键字,我以某种方式破坏了 Person 和 Contact 之间的连接,以至于服务不再尝试获取更多信息,而不仅仅是人……因此不会崩溃?

对于我在这件事上的天真,我深表歉意,但如果能澄清一点,我将不胜感激。 提前致谢。

最佳答案

virtual 关键字告诉 Entity Framework 它可以(如果您也告诉它)在您查询集合时使用延迟加载来加载集合中的元素。

所以删除 virtual 关键字意味着延迟加载将不再起作用。但如果您对此没有意见,那就太好了。

关于c# - 在不重新创建模型的情况下在 WCF 服务中使用 Entity Framework 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16288197/

相关文章:

c# - 将 WPF 控件类作为模板类

c# - 我可以从内部禁用滚动查看器吗?

iphone - odatagen : Failed to generate proxy classes. 请验证元数据(iOS)

sql-server - 用于组合数据的 Entity Framework 算法

c# - MVC 4 Simple Populate DropDown 从数据库模型

c# - 如何从 XML 文档注释创建网站?

c# - 为什么 File.Open 在覆盖现有文件方面比 File.Create 好得多?

c# - 从 Android KSoap2 使用在 Mono 上运行的 WCF Soap 服务

ASP.NET Identity 2.0解密Owin Cookie

c# - Entity Framework 不支持 protected 导航属性吗?