方法返回空列表,即使它有元素
本文关键字:元素 返回 列表 方法 | 更新日期: 2023-09-27 18:36:20
对不起,如果有人已经问过这个问题。我一直在环顾四周,但找不到任何相关的东西。
因此,我正在使用实体框架,并且我正在尝试使用以下代码使用ToList方法从数据集中加载"Idiomas"列表:
//List<Idioma> ans = new List<Idioma>(contexto.Idiomas);
return contexto.Idiomas.ToList();
但是,该方法返回一个空列表,即使我可以通过调试器看到 DataSet 具有元素。
编辑
我没有输入任何额外的代码,因为除了这两行之外没有任何额外的代码。我只是先创建一个实体框架模型,生成数据库,然后从数据库更新模型以确保一切正常。
Contexto是来自类 LivroContexto 的一个实例,它实现了 DbContext(由 vs2012 自动生成,见下文)。
LivroContainer:
public partial class LivroContainer : DbContext
{
public LivroContainer() : base("name=LivroContainer")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
public DbSet<Idioma> Idiomas { get; set; }
}
成语:
public partial class Idioma
{
public Idioma()
{
this.Traducaos = new HashSet<Traducao>();
}
public int IdIdioma { get; set; }
public string Lingua { get; set; }
public virtual ICollection<Traducao> Traducaos { get; set; }
}
谢谢
没有人能从你发布的代码量中看到为什么你的代码不起作用。
但是,请确保以下几点:
contexto
继承DbContext
的实例的类或任何继承DbContext
的子类。-
确保,以防万一,你没有通过代码生成数据库,而是将现有数据库映射到代码优先前端,
DbSet<Idioma> Idiomas
映射到正确的表。protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Idioma>().ToTable("IdiomaTableNameInDatabase"); }
确保在 DbContext - 基构造函数中传递的 connectionString 名称存在于 web.config 中,如果您没有传递任何内容,请确保存在具有 DbContext 继承类名称的 connectionString。
如果所有这些都是正确的,那么绝对没有理由,为什么contexto.Idiomas.ToList()
不会返回任何东西。
而且,比如说,你的上下文类是MyContext,那么它应该是这样的:
public class MyContext:DbContext
{
public MyContext:base("ConnectionStringName")
{
}
//--dbSet properties
public DbSet<Idioma> Idiomas{get;set;}
//other overridden methods
}
你使用哪个,在你的上层像这样:
public List<Idioma> GetAllIdiomas()
{
MyContext contexto = new MyContext();
return contexto.Idiomas.ToList();
}