实体框架获取错误.不会得到引用对象

本文关键字:引用 对象 框架 获取 取错误 实体 | 更新日期: 2023-09-27 18:19:22

两个表都包含信息,但不知何故数据库不给我MethodComponent对象。当我使用:

进行测试时
var item = d.Get_Categories();
string name = item.Last().MethodComponent.Last().Name;

得到System.ObjectDisposedException。知道是怎么回事吗?

模型类:

    public partial class Category
{
    public Category()
    {
        this.MethodComponent = new HashSet<MethodComponent>();
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<MethodComponent> MethodComponent { get; set; }
    public override string ToString()
    {
        return Name;
    }
}

数据库类别:

CREATE TABLE [dbo].[Category] (
[Id]   INT        IDENTITY (1, 1) NOT NULL,
[Name] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)

);

数据库组件
CREATE TABLE [dbo].[MethodComponent] (
[Id]         INT            IDENTITY (1, 1) NOT NULL,
[Name]       NVARCHAR (MAX) NULL,
[StartDate]  DATETIME       NULL,
[EndDate]    DATETIME       NULL,
[ProjectID]  INT            NULL,
[CategoryID] INT            NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_MethodComponent_Category] FOREIGN KEY ([CategoryID]) REFERENCES [dbo].[Category] ([Id]),
CONSTRAINT [FK_MethodComponent_project] FOREIGN KEY ([ProjectID]) REFERENCES [dbo].[Project] ([Id])

);

从数据库获取数据:

        public List<Category> Get_Categories()
    {
            using (var context = new ProcessDatabaseEntities())
            {
                return context.Category.ToList();
            }
    }

编辑:我添加了LazyLoadingEnabled = false,现在我得到另一个错误:系统。InvalidOperationException

    public List<Category> Get_Categories()
    {
            using (var context = new ProcessDatabaseEntities())
            {
                **context.Configuration.LazyLoadingEnabled = false;**
                return context.Category.ToList();   
            }
    }

实体框架获取错误.不会得到引用对象

解决了:

        public List<Category> Get_Categories()
    {
            using (var context = new ProcessDatabaseEntities())
            {

                //context.Configuration.LazyLoadingEnabled = false;
                var list = context.Category.Include(p => p.MethodComponent).ToList();
                return list;
            }
    }