2014-10-01 126 views
0

我创建了一个DataContext。实体框架DataContext返回空值

namespace Attendance.DataAccess.DAL 
{ 
    using System.Data.Entity; 
    using System.Data.Entity.ModelConfiguration.Conventions; 
    using Attendance.DataAccess.Models; 

    public class AttendanceContext : DbContext 
    { 
     public DbSet<Person> Persons { get; set; } 
     public AttendanceContext() 
      : base("AttendanceContext") 
     { 

     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     } 
    } 
} 

我已经创建了一个配置。

namespace Attendance.DataAccess.Migrations 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Migrations; 
    using System.Linq; 
    using Attendance.DataAccess.Models; 
    using Attendance.DataAccess.DAL; 

    internal sealed class Configuration : DbMigrationsConfiguration<AttendanceContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
     } 

     protected override void Seed(AttendanceContext context) 
     { 
      context.Persons.AddOrUpdate(
       p => p.FirstName, 
       new Person { FirstName = "Andrew Peters" }, 
       new Person { FirstName = "Brice Lambson" }, 
       new Person { FirstName = "Rowan Miller" } 
      ); 

     } 
    } 
} 

我已经创建了初始迁移。

namespace Attendance.DataAccess.Migrations 
{ 
    using System; 
    using System.Data.Entity.Migrations; 

    public partial class InitialCreate : DbMigration 
    { 
     public override void Up() 
     { 
      CreateTable(
       "dbo.Person", 
       c => new 
        { 
         Id = c.Int(nullable: false, identity: true), 
         FirstName = c.String(), 
         LastName = c.String(), 
        }) 
       .PrimaryKey(t => t.Id); 

     } 

     public override void Down() 
     { 
      DropTable("dbo.Person"); 
     } 
    } 
} 

我已经创建了一个简单的API控制器。

namespace Attendance.WebApi.Controllers 
{ 

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Net; 
    using System.Net.Http; 
    using System.Web.Http; 
    using Attendance.DataAccess.Models; 
    using Attendance.DataAccess.DAL; 
    using System.Data.Entity; 

    public class PersonController : ApiController 
    { 
     // http://localhost/Attendance.WebApi/api/person 
     public IEnumerable<Person> GetAllPersons() 
     { 
      AttendanceContext db = new AttendanceContext(); 

      var persons = 
        from person 
        in db.Persons 
        select person; 

      // this is always an empty array 
      // I.e. the web browser displays <ArrayOfPerson/> 
      return persons.ToList(); 
     } 
    } 
} 

我已经配置如下:

<connectionStrings> 
    <add name="AttendanceContext" 
     connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=AttendanceLocal;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient"/> 
</connectionStrings> 

我也直接查询数据库,使用服务器资源管理器和对象资源管理器。数据库在Person表中有行。为什么这些行不显示在实体框架DataContext Person中?

回答

0

我需要在Nuget Package Manager控制台中运行Update-Database。我查询的数据库没有种子值。