0

我有一个这样的模型:

用户 => 个人资料 => 模块 => 治疗

(一个用户有个人资料,一个个人资料有很多模块,一个模块有很多处理)

该模型首先由实体框架代码进行反向工程

当我在一个简单的 asmx 文件中使用它来询问用户时,我得到了这个错误:

A circular reference was detected while serializing an object of type 'CDU.Entities.Models.User'.

这是因为配置文件实体包含一个用户列表,这些用户拥有他们的 pofile ......等等。

在我的数据上下文中,我禁用了延迟加载,似乎可以进行身份​​验证,在我检索到的用户配置文件中,我有配置文件 ID,但未加载配置文件实体。

            this.Configuration.LazyLoadingEnabled = false;

伟大的!

一旦通过身份验证,我必须根据他的个人资料中的模块和处理来构建用户 Menu 。

所以我要求对象加载配置文件:

        User user = new User();
        using (cduContext db = new cduContext())
        {
            string encryptedPassword = Encryption.Encrypt(password);
            user = (from u in db.Users
                    where u.UserName.Equals(login) &&
                          u.Password.Equals(encryptedPassword)
                    select u).FirstOrDefault();
            // Including the user's Profile
            user = db.Users.Include("Profile").FirstOrDefault();
        }
        return user;

配置文件已加载,但他的子实体也已加载,例如此配置文件的用户列表!

然后,我正在享受同样的错误:

A circular reference was detected while serializing an object of type 'CDU.Entities.Models.User'.

为什么配置文件是“延迟加载”?

我需要根据需要包括这些实体......我该怎么做?

4

1 回答 1

0

尝试获取配置文件。

  profile = (from p in db.Profiles 
                where p.User.UserName.Equals(login) &&
                      p.User.Password.Equals(encryptedPassword)
                select p).FirstOrDefault();
于 2013-03-18T14:08:14.500 回答