实体框架多个EDMX文件共享相同的表

时间:2015-11-11 20:46:16

标签: entity-framework-6 entity

环境:EF 6,SQL 2012

设置:数据库优先,禁用LazyLoading

问题可能看起来更通用,但会尝试以最佳方式解释。

我有一个使用ASP.NET MVC的大型应用程序,并根据逻辑功能对实体进行分组。因此我们构建了多个EDMX文件

我们必须在两个EDMX文件中使用类似的实体。

SchoolTeachersStudents有关。在第一个EDMX文件中,我使用了schoolTeachers。在第二个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中,它具有与学生相关的导航属性。但是一次只存在实体文件。只有一个实体文件,代码中断 注意:这只是示例..不是我原来的应用程序

1 个答案:

答案 0 :(得分:1)

谢谢@GertArnold。同时,我试图创建文件夹并将EDMX文件保存在其中。意味着我为每个逻辑组创建了单独的文件夹,然后在其中包含了edmx文件。这反过来使得edmx文件实体具有不同的名称空间(我的意思是实体类),并且它还能够在多个EDMX文件中具有相同的实体。这听起来已经解决了我的问题。

我没有尝试将它们包含在不同的命名空间中。当我意识到即使我有两个EDMX文件时,整个想法也开始了,相关的实体(.csfiles)是在同一个物理位置创建的。我尝试创建子文件夹并包含EDMX文件。它解决了问题,我发现它有不同的名称空间

:):)