Можете ли вы поместить определяющий запрос (Entity Framework) во внешний XML? - PullRequest
1 голос
/ 25 августа 2010

Например, в моем файле 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 на самом деле не является подходящим вариантом, так как я буду работать с (legacy) база данных уже определена.

1 Ответ

2 голосов
/ 25 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...