例如,在我的Model.edmx文件中,我有:
<Schema Namespace="dbModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
<EntityContainer Name="dbModelStoreContainer">
<EntitySet Name="Students" EntityType="dbModel.Store.Students" store:Type="Tables" Schema="dbo" />
<EntitySet Name="Teachers" EntityType="dbModel.Store.Teachers" store:Type="Tables" Schema="dbo" />
</EntityContainer>
<EntityType Name="Students">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="Name" Type="nvarchar(max)" Nullable="false" />
<Property Name="TeacherId" Type="int" Nullable="false" />
</EntityType>
<EntityType Name="Teachers">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="Name" Type="nvarchar(max)" Nullable="false" />
</EntityType>
<Function Name="ListAllStudents" IsComposable="false">
<CommandText>
select * from student
WHERE teacherid = @id;
</CommandText>
<Parameter Name="id"
Mode="In"
Type="int"/>
</Function>
</Schema>
是否有可能
<Function Name="ListAllStudents" IsComposable="false">
<CommandText>
select * from student
WHERE teacherid = @id;
</CommandText>
<Parameter Name="id"
Mode="In"
Type="int"/>
</Function>
住在Model.edmx之外并引用它?我想要做的就是将不同的web.config部分分解为自己的XML文件。我不想让EDMX文件对于一个项目来说很大,因为我会有很多定义的查询。
**编辑:Code First不是真正的责任选项,因为我将使用已经定义的(遗留)数据库。
答案 0 :(得分:2)
我不知道有什么直接的方式去做你正在寻找的东西。但是,您可能会考虑几种替代方案:首先,通常没有理由将所有内容放在单个整体edmx文件中。查找可以使用多个edmx文件来“逻辑分组”应用程序各个方面的区域。通常这是将事情分开的好方法。
此外,如果您使用的是最新版本的EF(EF4),请查看“代码优先”方法。这引入了一个有趣的“关注点分离”,其中您有专门用于将实体映射到模型的映射类,并且这些映射类都被分解为它们自己的类,因此您不会最终得到单片映射文件。实际上,它只是C#类的集合。