WCF与实体框架错误

时间:2010-08-17 20:10:00

标签: entity-framework c#-4.0 wcf entity-framework-4

错误: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如何正常协同工作?

1 个答案:

答案 0 :(得分:2)

您的Person类中是否有导航属性?你是否禁用了延迟加载?否则,它可能会尝试在序列化期间加载导航属性的内容,并且由于关闭的上下文而失败。

提出其他问题:

[DataMemberAttribute()]和[DataMember]相同。它只是简称。

[DataContractAttribute(IsReference = true)]和[DataContract]不相同。 IsRefrence允许跟踪导航属性中的循环引用。如果没有此参数,循环引用会导致永不结束的递归。