C# 在WCF服务中使用实体框架类而不重新创建模型
我有一个包含edmx的dll项目。在同一个解决方案中,我有一个WCF库项目,在这个项目中有一个接口和一个类来保存所有OperationContracts。我注意到,在模型中只有一个表的情况下,这非常有效。一旦我向edmx添加了另一个与第一个表有关系的表,服务就会中断。所以,我已经缩小了我收到的错误(在一般意义上)是由于我的EF类型之间的关系,更具体地说是由于每个类中声明关系的方式。。。所以基本上我只是进去,在我的个人课上发现了以下几点:C# 在WCF服务中使用实体框架类而不重新创建模型,c#,wcf,entity-framework,C#,Wcf,Entity Framework,我有一个包含edmx的dll项目。在同一个解决方案中,我有一个WCF库项目,在这个项目中有一个接口和一个类来保存所有OperationContracts。我注意到,在模型中只有一个表的情况下,这非常有效。一旦我向edmx添加了另一个与第一个表有关系的表,服务就会中断。所以,我已经缩小了我收到的错误(在一般意义上)是由于我的EF类型之间的关系,更具体地说是由于每个类中声明关系的方式。。。所以基本上我只是进去,在我的个人课上发现了以下几点: public int PersonId { get; se
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; }
public int PersonId{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串DisplayName{get;set;}
公共布尔值是雇员{get;set;}
公共可为空的OrganizationId{get;set;}
公共虚拟ICollection联系人{get;set;}
因此,这导致我(我不知道为什么)尝试简单地删除与联系人和POOF的关系上的虚拟关键字!!!!像magic一样,该服务启动并运行起来,就像单人表是模型中唯一的类一样。
所以我的问题是。。。为什么?
为什么当我删除virtual关键字时,WCF服务会突然起作用?这对于人与人之间的关系意味着什么
我有一个理论认为,之所以会发生这种情况,是因为现在通过删除虚拟关键字,我以某种方式打破了个人和联系人之间的联系,使得服务不再试图获取更多的信息,而不仅仅是个人。。。这样就不会破裂
我为我在这件事上的幼稚道歉,但如果能澄清一点,我将不胜感激。
提前感谢。当您查询集合时,virtual关键字告诉Entity Framework它可以(如果您也这么说的话)使用延迟加载来加载集合中的元素
因此,删除virtual关键字意味着延迟加载将不再有效。但如果你对此没意见,那就太好了。真的吗?!??!我一直把头撞在墙上,想知道如何轻松地从EF->WCF。。。。我所要担心的就是不再有懒散的加载。。。。这真是个好消息!!!!哈哈,谢谢你!!!