实体框架返回0项

时间:2015-07-25 15:50:32

标签: c# entity-framework-6

我正在使用Entity Framework 6.1.3。

当我尝试从数据库表中获取值时,它返回0项,但在数据库中是9行。

实体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生成的。

我需要从数据库中获取值。

更新

我已经解决了这个问题。

关键是我的解决方案中有两个项目。首先是一个拥有数据库模型的站点,其次是简单的ConsoleApplication,我试图测试数据库数据。当我尝试通过dbcontext从其他应用程序连接到数据库时,它无法正常工作,如上所述。为了使它工作,我将具有edmx模型和dbcontext的Web站点应用程序中的连接字符串传输到应用程序,我正在测试此连接和数据。

以下是它的工作原理

enter image description here

黄色 - ConsoleApplication 红色 - 带有模型和dbcontext的网站

enter image description here

这是一个模型和Web.config 我将连接字符串从Web.config传输到ConsoleApplication的App.cofig和模型。

enter image description here

带有转移模型和连接字符串的ConsoleApplication。

毕竟它对我有用。

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

以下是使用实体框架和LINQ查询从db获取数据的常用方法。

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

    var result = L2EQuery.ToList()<DataMenuItemSet>;
 }
希望会有所帮助。