Can you place a Defining Query (Entity Framework) in external XML?

For example in my Model.edmx file I have:

        <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>

Is it possible for

<Function Name="ListAllStudents" IsComposable="false">
  <CommandText>
    select * from student
    WHERE teacherid = @id;
  </CommandText>
  <Parameter Name="id"
             Mode="In"
             Type="int"/>
</Function>

to live outside of the Model.edmx and reference it? What I want to do is similar in nature to breaking out the different web.config sections into their own XML file. I don't want to make the EDMX file huge for a project since I will have quite a few defined queries.

**EDIT: Code First is not really a liable options since I will be working with a (legacy) database already defined.

1
задан choudeshell 25 August 2010 в 03:43
поделиться

1 ответ

Я не знаю никакого прямого способа сделать то, что вы ищете. Тем не менее, есть несколько альтернатив, которые вы могли бы рассмотреть: во-первых, часто нет причин помещать все в один монолитный файл edmx. Ищите области, в которых вы можете использовать несколько файлов edmx для «логической группировки» различных аспектов вашего приложения. Часто это хороший способ расстаться.

Кроме того, если вы используете последнюю версию EF (EF4), обратите внимание на подход «сначала код». Это вводит интересное «разделение задач», когда у вас есть классы сопоставления, посвященные тому, как вы сопоставляете свои объекты с вашей моделью, и все они разбиты на свои собственные классы, поэтому вы не получите монолитный файл сопоставления. На самом деле это просто набор классов C#.

2
ответ дан 2 September 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: