2014-10-01 3 views
0

Я создал DataContext.Entity Framework 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 Entity Framework?

ответ

0

Мне нужно было запустить Update-Database в консоли менеджера пакетов Nuget. База данных, к которой я обращалась, не имела начальных значений.

Смежные вопросы