我有一个正常的EF应用程序。然后,我需要向表updatedBy
中添加一列R
。我将其添加到SQL Server的表中,它是:
updatedBy (nvarchar(50), null)
我在edmx文件中添加了与updatedBy
相关的三行,如下面的***所示:
<edmx:StorageModels>
<Schema Namespace=.... >
<EntityType Name="R">
*** <Property Name="updatedBy" Type="nvarchar" MaxLength="50" Nullable="true" />
...
</Schema>
</edmx:StorageModels>
<edmx:ConceptualModels>
<Schema Namespace="... >
<EntityType Name="recontractRequest">
*** <Property Name="updatedBy" Type="String" Nullable="true" MaxLength="50" FixedLength="false" Unicode="true" />
</EntityType>
</Schema>
</edmx:ConceptualModels>
<edmx:Mappings>
<Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
<EntityContainerMapping ... >
<EntitySetMapping Name="Rs">
<EntityTypeMapping TypeName="myModel.R">
<MappingFragment StoreEntitySet="Rs">
*** <ScalarProperty Name="updatedBy" ColumnName="updatedBy" />
...
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
除上述内容外,我在代码中的任何地方对updatedBy
进行了 no 引用,并对运行良好的版本进行了 no 其他更改。新代码可以正常编译。但是当使用db.Rs的现有代码被击中时,例如:
var rr = from r in db.Rs select new Q { x = r.someOtherColumn }.ToList();
我得到:
R类型的实体不是当前上下文模型的一部分
当我从edmx文件中删除那三行时,它再次运行正常。是什么导致错误?是由于SQL Server与该模型中的列的一个或多个属性之间不匹配引起的吗?为什么仅在应用程序中添加列如此困难?