很抱歉,如果有人问过这个问题。我一直在四处寻找但找不到相关的东西。
所以,我正在使用Entity Framework,我试图通过以下代码使用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; }
}
IDIOMAS:
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; }
}
谢谢
答案 0 :(得分:0)
根据您发布的代码数量,没有人能够看到您的代码无效的原因。
但是,请确保以下内容:
contexto
的类继承DbContext
或继承DbContext
的任何子类。如果您没有生成数据库,请通过代码生成数据库,而不是将现有数据库映射到codefirst前端,DbSet<Idioma> Idiomas
映射到正确的表。即。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Idioma>().ToTable("IdiomaTableNameInDatabase");
}
如果所有这些都是正确的,那么绝对没有理由,为什么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();
}