gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:41 25 4
gpt4 key购买 nike

我正在构建一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com