实体框架获取错误.不会得到引用对象
本文关键字:引用 对象 框架 获取 取错误 实体 | 更新日期: 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;
}
}