Обновление модели из базы данных прерывается, когда в моей модели есть представление - PullRequest
0 голосов
/ 21 октября 2010

Одна из моих моделей Entity Framework содержит представление MS-SQL. Представление называется Пользовательским и содержит различные свойства для пользователей.

Когда я щелкаю правой кнопкой мыши модель и выбираю Обновить модель из базы данных, я получаю следующую ошибку: «Произошло исключение типа« System.InvalidOperationException »при попытке выполнить обновление из базы данных. Сообщение об исключении:« Расширение поколения модели внесло изменения в модель, сгенерированную из базы данных, которая была недопустимой ».

Это происходит в любой нашей модели, которая использует View в Entity Framework 4.0. Становится очень утомительным удаление и воссоздание модели каждый раз, когда изменяется какая-то часть структуры базы данных. Есть ли способ заставить «Обновить модель из базы данных» работать, когда моя модель содержит представление?

Если это имеет значение, это только для чтения.

РЕДАКТИРОВАТЬ: я забыл упомянуть, это кросс-базы данных. Это, кажется, где проблема возникает. Обычный вид (в той же базе данных) работает нормально.

Вот мой пример файла EDMX. Я не уверен, будет ли это полезно или нет.

<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
<edmx:Runtime>
<edmx:StorageModels>
  <Schema Namespace="SignupsModel.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="SignupsModelStoreContainer">
      <EntitySet Name="Users" EntityType="SignupsModel.Store.Users" store:Type="Views" Schema="dbo">

      </EntitySet>
    </EntityContainer>
        <EntityType Name="Users">
      <Key>
        <PropertyRef Name="userID" />
      </Key>
      <Property Name="userID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="userName" Type="varchar" Nullable="false" MaxLength="50" />
      <Property Name="campusID" Type="varchar" Nullable="false" MaxLength="7" />
      <Property Name="firstName" Type="varchar" Nullable="false" MaxLength="30" />
      <Property Name="middleInitial" Type="varchar" Nullable="false" MaxLength="1" />
      <Property Name="lastName" Type="varchar" Nullable="false" MaxLength="30" />
    </EntityType>
  </Schema>
</edmx:StorageModels>
<edmx:ConceptualModels>
  <Schema Namespace="SignupsModel" Alias="Self" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
    <EntityContainer Name="Entities" annotation:LazyLoadingEnabled="true">
      <EntitySet Name="Users" EntityType="SignupsModel.User" />
    </EntityContainer>
    <EntityType Name="User">
      <Key>
        <PropertyRef Name="userID" />
      </Key>
      <Property Name="userID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
      <Property Name="userName" Type="String" Nullable="false" MaxLength="50" Unicode="false" FixedLength="false" />
      <Property Name="campusID" Type="String" Nullable="false" MaxLength="7" Unicode="false" FixedLength="false" />
      <Property Name="firstName" Type="String" Nullable="false" MaxLength="30" Unicode="false" FixedLength="false" />
      <Property Name="middleInitial" Type="String" Nullable="false" MaxLength="1" Unicode="false" FixedLength="false" />
      <Property Name="lastName" Type="String" Nullable="false" MaxLength="30" Unicode="false" FixedLength="false" />
    </EntityType>
  </Schema>
</edmx:ConceptualModels>
<edmx:Mappings>
  <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2008/09/mapping/cs">
    <EntityContainerMapping StorageEntityContainer="SignupsModelStoreContainer" CdmEntityContainer="Entities">
      <EntitySetMapping Name="Users"><EntityTypeMapping TypeName="SignupsModel.User"><MappingFragment StoreEntitySet="Users">
        <ScalarProperty Name="userID" ColumnName="userID" />
        <ScalarProperty Name="userName" ColumnName="userName" />
        <ScalarProperty Name="campusID" ColumnName="campusID" />
        <ScalarProperty Name="firstName" ColumnName="firstName" />
        <ScalarProperty Name="middleInitial" ColumnName="middleInitial" />
        <ScalarProperty Name="lastName" ColumnName="lastName" />
      </MappingFragment></EntityTypeMapping></EntitySetMapping>
    </EntityContainerMapping>
  </Mapping>
</edmx:Mappings>

1 Ответ

1 голос
/ 22 октября 2010

Я думаю, что разыскал проблему.Некоторое время назад, я думаю, я установил надстройку Visual Studio под названием «Edmx Views Processor».Я думал, что удалил это.Удаление аддона, похоже, решает проблему.

Расширение, о котором идет речь, находится здесь: http://visualstudiogallery.msdn.microsoft.com/en-us/d9b76b5d-d45c-4e79-8d28-31444be582de

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