错误:ObjectContext实例已被释放,不能再用于需要连接的操作。
我正在尝试使用Entity Framework(VS 2010,.NET 4)创建WCF服务。当我运行它时,我得到上述错误。
我读过有关编辑T4模板的内容,但似乎已经有了
[DataContractAttribute(IsReference=true)]
public partial class Person : EntityObject
和
[DataMemberAttribute()]
public global::System.Int32 ID
{
get
{
return _ID;
}
我不确定
之间有什么区别[DataMemberAttribute()] and [DataMember]
或
[DataContractAttribute(IsReference=true)] and [DataContract]
或者
public Person GetPersonByID(int id)
{
using (var ctx = new MyEntities())
{
return (from p in ctx.Person
where p.ID == id
select p).FirstOrDefault();
}
}
WCF和EF如何正常协同工作?
答案 0 :(得分:2)
您的Person类中是否有导航属性?你是否禁用了延迟加载?否则,它可能会尝试在序列化期间加载导航属性的内容,并且由于关闭的上下文而失败。
提出其他问题:
[DataMemberAttribute()]和[DataMember]相同。它只是简称。
[DataContractAttribute(IsReference = true)]和[DataContract]不相同。 IsRefrence允许跟踪导航属性中的循环引用。如果没有此参数,循环引用会导致永不结束的递归。