2015-07-25 5 views
4

Я использую Entity Framework 6.1.3.Entity Framework возвращает 0 элементов

Когда я пытаюсь получить значения из таблицы базы данных, он возвращает мне 0 элементов, но в базе данных - 9 строк.

И Entity FrameWork вызывает метод OnModelCreating.

Я искал весь интернет, но ничего не нашел, как исправить это.

Мой DbContext класс

namespace TestTask.Models 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Infrastructure; 

    public partial class Entities : DbContext 
    { 
     public Entities() 
      : base("MenuItemsContainer") 
     { } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 

     modelBuilder.Properties() 
        .Where(p => p.Name == "Id") 
        .Configure(p => p.IsKey()); 
     } 

     public virtual DbSet<DataMenuItemSet> DataMenuItemSet { get; set; } 
     public virtual DbSet<ItemsSet> ItemsSet { get; set; } 
    } 
} 

Мой DataMenuItemSet класс

using System.ComponentModel.DataAnnotations; 

namespace TestTask.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class DataMenuItemSet 
    { 
     public DataMenuItemSet() 
     { 
      this.ItemsSet = new HashSet<ItemsSet>(); 
     } 

     [Key] 
     public int Id { get; set; } 
     public bool IsRoot { get; set; } 
     public string Name { get; set; } 
     public Nullable<int> Parent { get; set; } 

     public virtual ICollection<ItemsSet> ItemsSet { get; set; } 
    } 
} 

Все это создается с Entity Framework.

Мне нужно получить значения из базы данных.

Обновлено

I`ve решить эту проблему.

Дело в том, что у меня есть два проекта в моем решении. Сначала это сайт, который имеет модель из базы данных, а во-вторых, это просто ConsoleApplication, где я пытался проверить данные базы данных. Когда я пытаюсь подключиться к db через dbcontext из другого приложения, он не работает, как описано выше. Чтобы он работал, я передал строку подключения из приложения веб-сайта, в которой есть модель edmx и dbcontext, в приложение, где я тестировал это соединение и данные.

Вот как это работает

enter image description here

Желтый - ConsoleApplication Red - веб-сайт с моделью и DbContext

enter image description here

Вот модель и Web.config я переведен строка подключения из Web.config в App.cofig из ConsoleApplication и модель.

enter image description here

ConsoleApplication с перетекает модели и строки подключения.

И все-таки это работает для меня.

Спасибо за помощь !!!

+0

context.TableName.toList() –

+0

Какие параметры вы использовали при первоначальном создании контекста? Например. сначала пустым кодом, сначала моделью от дизайнера и т. д. Можете ли вы разместить строку соединения? –

+0

Я создал модель из базы данных. Строка подключения: 'metadata = res: //*/Models.DataMenuItems.csdl | res: //*/Models.DataMenuItems.ssdl | res: //*/Models.DataMenuItems.msl; поставщик = System.Data.SqlClient , строка подключения поставщика = " источник данных = (LocalDB) \ v11.0; встроенная защита = True; MultipleActiveResultSets = True; App = EntityFramework " "providerName =" System.Data.EntityClient ' –

ответ

0

Вот очень распространенный способ получения данных из db с использованием структуры сущностей и запроса LINQ.

using (var context = new Entities()) 
{ 
    var L2EQuery = from item in context.DataMenuItemSet 
        where item.IsRoot == true 
        select item; 

    var result = L2EQuery.ToList()<DataMenuItemSet>; 
} 

Надеюсь, что это будет полезно.

+0

Я пробовал этот. Но он все равно возвращает мне 0 элементов. –