Одна из моих моделей 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>