2015-04-23 2 views
1

Я нашел проблему, решение находится в комментариях.Не удается получить данные с кодом EF Сначала

Я могу создать таблицы и диаграмму, но я не могу поместить данные в таблицу.

1.I установлен EF от Nuget.

2.Чтобы настроить консоль PM, я написал Enable-Migrations -EnableAutomaticMigrations.

Модель находится в библиотеке классов All.Model и методы контекста в библиотеке классов All.Dal. Я не понимал, что я делаю неправильно, можете ли вы мне помочь?

Это мой контекст код:

using All.Model; 

namespace All.Dal 
{ 
    public class AllDb : DbContext 
    { 
    public AllDb() 
    { 
     Database.Connection.ConnectionString = "Server=SEUPHORIA;Database=AllDb;UID=sa;PWD=123;"; 
    } 

    public DbSet<Category> Categories { get; set; } 
    public DbSet<Comment> Comments { get; set; } 
    public DbSet<Line> Lines { get; set; } 
    public DbSet<User> Users { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     Database.SetInitializer<AllDb>(new DbStrategy()); 
     modelBuilder.Entity<Category>().Property(c => c.Name).IsRequired(); 
     modelBuilder.Entity<Comment>().Property(c => c.Letter).IsRequired(); 
    } 
} 

}

И это мой код стратегия:

using All.Model; 

namespace All.Dal 
{ 
    public class DbStrategy : DropCreateDatabaseIfModelChanges<AllDb> 
    { 
     protected override void Seed(AllDb context) 
    { 
     List<Category> CategoryDefault = new List<Category> 
     { 
      new Category { Name="Organic", UpID = 0 }, 
      new Category { Name="Object", UpID=0}, 
      new Category { Name="Time",UpID=0}, 
     }; 

     foreach (Category item in CategoryDefault) 
     { 
      context.Categories.Add(item); 
     } context.Users.Add(new User { Name = "sss" }); 

    } 
} 

}

это моя категория класс:

public class Category : Standart 
    { 
    public int UpID { get; set; } 
    public string Name { get; set; } 
    public int LineID { get; set; } 
    public virtual List<Line> Lines { get; set; } 
} 
+0

Вы можете поделиться схемой таблицы категорий? – prashant

+0

Я добавил категорию – Seuphoria

+1

, пожалуйста, ознакомьтесь с этим http://stackoverflow.com/questions/17044162/cannot-insert-by-using-entity-framework – prashant

ответ

1

Вы добавляете элементы в контекст БД, но не совершаете изменения, вызывая SaveChanges() на них. Просто добавьте эту строку:

protected override void Seed(AllDb context) 
{ 
    List<Category> CategoryDefault = new List<Category> 
    { 
     new Category { Name="Organic", UpID = 0 }, 
     new Category { Name="Object", UpID=0}, 
     new Category { Name="Time",UpID=0}, 
    }; 

    foreach (Category item in CategoryDefault) 
    { 
     context.Categories.Add(item); 
    } 
    context.Users.Add(new User { Name = "sss" }); 
    context.SaveChanges(); // make sure you save! 
} 
+0

Это контекст, а не база данных, которую вы не можете сделать savechanges.Btw Я пробовал, но не работал. – Seuphoria

+0

Почему вы не можете использовать [DbContext.SaveChanges()] (https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext.savechanges%28v=vs.113%29.aspx) ? Что вы делаете, когда пытаетесь? – br4d

+0

Я нашел проблему, поскольку прашант сказал, что я отправляю нулевые данные в столбцы с нулевым значением. И SaveChanges сохраняет первый контекст данных после того, как база данных не только контекст. Спасибо за помощь. – Seuphoria

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