Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 只是不能让实体框架得到我想要的_C#_Database_Entity Framework - Fatal编程技术网

C# 只是不能让实体框架得到我想要的

C# 只是不能让实体框架得到我想要的,c#,database,entity-framework,C#,Database,Entity Framework,好吧,我在这方面运气不太好。我是实体框架的新手,从昨天起就一直在为这件小事而奋斗 这是我的桌子: 客户端id,客户端名称 项目id、项目名称、客户端id 任务id、任务名称、项目id、状态id 任务状态id、状态名称 在代码中,我一次只处理一个项目,下面是我如何使用EF加载该项目: thisProject = (from p in dataEntity.projects where p.id == projectID s

好吧,我在这方面运气不太好。我是实体框架的新手,从昨天起就一直在为这件小事而奋斗

这是我的桌子:

客户端id,客户端名称 项目id、项目名称、客户端id 任务id、任务名称、项目id、状态id 任务状态id、状态名称 在代码中,我一次只处理一个项目,下面是我如何使用EF加载该项目:

thisProject = (from p in dataEntity.projects
                   where p.id == projectID
                   select p).FirstOrDefault();
之后,当我加载任务时:

thisProject.Tasks.Load();
然后,我将DevExpress XtraGrid的数据源设置为加载的任务:

taskGridControl.DataSource = thisProject.Tasks;
到目前为止,一切都按预期进行,网格显示了我加载的项目的所有任务。但是,我还想显示TaskStatusName字段,它存储在不同的表中


使用sql连接很容易做到这一点,但就我个人而言,我无法理解这一点。

最简单的方法是将数据选择到为此网格视图定制的类中:

from t in dataEntity.tasks
where t.projectId == projectID
select new TaskInfo
{
    ProjectName = t.project.projectname,
    TaskName = t.taskname,
    StatusName = t.taststatus.statusname
}
确保另一个表已加载。假设另一个表名为TaskStatus

在设计器中的“数据绑定”下,只需像引用任何其他字段一样引用它,并使用TaskStatus。前面的限定符:TaskStatus.Status


听起来你的任务状态表还没有加载


我认为您可能会更幸运地使用EF版本4,这样您就不需要“thisProject.Tasks.Load”行,任务状态表也会自动为您惰性地加载。

只需在已经建议的内容中添加一些想法

第一条可能不适用,但如果适用…:如果在加载项目时,您已经知道需要任务和状态,则可以随项目一起加载相关数据

thisProject=来自dataEntity.projects.IncludeTasks.TasksStatus中的p 其中p.id==projectd 选择p.FirstOrDefault

我在猜测你的导航属性的名称


另一个可能考虑……你在使用ASP.NET吗?当您尝试延迟加载状态数据时,您可能无法再访问上下文。

如何知道我是否在EF版本4上?我是在VS2010中开发的,项目是.NET4.0.Ok,解决方案中的所有其他项目都是4.0,这个是3.5。我已经更新了,会看到结果的,谢谢!哇,不确定这是否是我的想象,但一旦我将数据项目更改为4.0,它似乎要快得多。我会不惜一切代价使用EF 4而不是版本1,如果只是为了功能,而且令人惊喜的是,它的启动速度更快!谢谢Julie,但是我正在使用WinForms,并且我考虑过急切地加载数据,但是我有一堆可能的数据类型,它们都具有相同的基本结构,需要时需要加载。这就成功了。我创建了这个类,并选择了它的一个IList实例。然后使用生成的列表对网格进行bing。谢谢
thisProject.Tasks.TasksStatusReference.Load();