环境:EF 6,SQL 2012
设置:数据库优先,禁用LazyLoading
问题可能看起来更通用,但会尝试以最佳方式解释。
我有一个使用ASP.NET MVC的大型应用程序,并根据逻辑功能对实体进行分组。因此我们构建了多个EDMX文件
我们必须在两个EDMX文件中使用类似的实体。
School
与Teachers
和Students
有关。在第一个EDMX文件中,我使用了school
和Teachers
。在第二个EDMX文件中,我使用了school
{1}}和students
但只创建了一个Entity类。如果我在第二个EDMX上下文文件上运行自定义工具,那么我第一个edmx上的实体(school.cs)
就会消失,它会出现在第二个上。
以下是我的第一个EDMX文件中的代码
如您所见,我没有访问school
实体,也禁用了Lazyloading。但它抱怨它无法找到school
文件。注意:课程有导航属性到学校。但我没有把它包括在内.. 为什么会这样呢?
var courses= DB.courses
.AsNoTracking()
.Select(e =>
new CourseDTO()
{
CourseID= e.CourseID,
Name= e.CourseName,
Desc= e.Desc,
isActive= e.isActive
})
.OrderBy(e => e.CourseID);
问题是,我只能在EDMX文件中包含一个实体。 在第一个EDMX中,它具有教师的导航属性 在第二个EDMX中,它具有与学生相关的导航属性。但是一次只存在实体文件。只有一个实体文件,代码中断 注意:这只是示例..不是我原来的应用程序
答案 0 :(得分:1)
谢谢@GertArnold。同时,我试图创建文件夹并将EDMX文件保存在其中。意味着我为每个逻辑组创建了单独的文件夹,然后在其中包含了edmx文件。这反过来使得edmx文件实体具有不同的名称空间(我的意思是实体类),并且它还能够在多个EDMX文件中具有相同的实体。这听起来已经解决了我的问题。
我没有尝试将它们包含在不同的命名空间中。当我意识到即使我有两个EDMX文件时,整个想法也开始了,相关的实体(.csfiles)是在同一个物理位置创建的。我尝试创建子文件夹并包含EDMX文件。它解决了问题,我发现它有不同的名称空间
:):)