c# - 来自数据库的数据未返回,但正常列表是

标签 c# asp.net entity-framework asp.net-web-api lazy-loading

我正在构建一个 webapi,但遇到了一个奇怪的问题。

当我做这样的事情时

List<Content> items = new List<Content>();

然后我向其中添加项目

items.Add(new Content());

然后我调用 url localhost/api/Content/Get 我会得到一个很好的 xml 和我的项目 但是当我做这样的事情时

public IEnumerable<Content> Get()
{
    List<Content> population = new List<Content>();
    Content[] test = new Content[5];

    var tmp = from c in db.Content select c;
    using (IEnumerator<Content> enumerator = tmp.GetEnumerator())
    {
        while (enumerator.MoveNext())
        {
            Content ctmp = (Content)enumerator.Current;
            population.Add(ctmp);
        }
    }
    return population;
}

然后我调用相同的 url,得到空白(白色)页面。当我返回 tmp 变量时,我也有同样的想法。

更新:

感谢帮助。主要问题仍然存在。为什么正常的 List 被正确返回,而从 db 创建的 List 却没有。从 DataProxies.Content 复制到 CONtent 并不是我梦寐以求的解决方案,正如 Jon 所注意到的那样,这有点奇怪。

db.Content.ToList() 的样本都没有帮助:/我很困惑

最佳答案

大概您的 SQL 查询没有找到任何项目,因此从该方法返回的列表是空的。请注意,您的代码可以更简单地表示为:

public IEnumerable<Content> Get()
{
    return db.Content.ToList();
}

或者可能:

public IEnumerable<Content> Get()
{
    return db.Content.Cast<Content>().ToList();
}

您需要对 db.Content 进行更多解释,以便我们为您提供更多帮助。也许您应该创建一个新的数据库上下文?例如:

public IEnumerable<Content> Get()
{
    using (FooDataContext db = new FooDataContext())
    {
        return db.Content.ToList();
    }
}

编辑:如果您真的想确保您只是返回Content 对象,而不是动态代理,您可以这样写:

public IEnumerable<Content> Get()
{
    using (FooDataContext db = new FooDataContext())
    {
        return db.Content
                 .ToList()
                 .Select(c => new Content { Name = c.Name,
                                            Foo =  c.Foo,
                                            // etc
                         });
    }
}

...只是直接复制属性。

关于c# - 来自数据库的数据未返回,但正常列表是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905763/

相关文章:

c# - 具有嵌套子列表的自动映射器

.net - Asp.net "Global"变量

c# - 将启用分页的 GridView 导出到 Excel

c# - 使用外部列表来排序 linq 查询

c# - 谷歌云存储 InsertMediaUpload 服务 BaseUri ArgumentNullException

c# - foreach 中的 System.OutOfMemoryException 循环遍历 worsheet 行

asp.net - 如何将 Web 表单保存到 MySQL 数据库中?

c# - 如何通过工作单元访问上下文中的方法?

c# - 我究竟做错了什么? wcf 和 Entity Framework

c# - OPEN XML SDK 2.0 中一个单元格中具有不同样式的两个 CellValues