当我尝试编译我的Web应用程序时出现以下错误:
错误11错误2002:MetadataWorkspace中不存在指定为此MSL一部分的概念模型的EntityContainer“SomeEntitieContainerName”。
我只有一个名为BancorlineDB.edmx的*.edmx
,其“实体容器名称”设置为“BancorLineEntidades”。
答案 0 :(得分:7)
这个错误只是我的分数:
使用Oracle数据库模式我在表上修改了主键字段的大小。 该字段是另一个表上的外键。 我忘了修改第二张表的大小。
在我的带有Entity Framework 5.0的.Net Web项目中,我从数据库中重新生成模型... ERROR 2002 EntityContainer bla ... bla ...
我花了很多时间来处理这个......愚蠢的错误和来自ODT 12的更愚蠢的信息。
答案 1 :(得分:3)
(很晚,我知道,但这个问题有很多观点)
我打赌你在某个地方改名了。 Visual Studio不会将这些更改传播到xml文件。在edmx xml中,查找<EntityContainerMapping CdmEntityContainer="badEntity" />
代码,并使用正确的名称替换badEntity
,在您的情况下BancorLineEntidades
答案 2 :(得分:2)
.edmx
格式可能很容易导致故障排除。就您而言,可能是两个名称不匹配的情况。
使用XML编辑器打开.edmx
文件,然后切换所有轮廓,您应该可以看到3个部分。
SSDL
和
CSDL
和
C-S
映射。
SSDL
存储对应于您的数据库表。 CSDL
概念对应于您的DbSets
或ObjectSets
。 C-S
映射是每个概念集与存储集的关系方式。
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<!-- EF Runtime content -->
<edmx:Runtime>
<!-- SSDL content -->
<edmx:StorageModels>
<Schema Namespace="SamDb.Store" Alias="Self" Provider="System.Data.SqlClient"...
<EntityContainer Name="SamDbStoreContainer">
</edmx:StorageModels>
<!-- CSDL content -->
<edmx:ConceptualModels>
<Schema Namespace="SamDb" Alias="Self" ...>
<EntityContainer Name="SamDbContainer" ...>
</edmx:ConceptualModels>
<!-- C-S mapping content -->
<edmx:Mappings>
<Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
<EntityContainerMapping
StorageEntityContainer="SamDbStoreContainer"
CdmEntityContainer="SamDbContainer" ...>
</edmx:Runtime>
</edmx:Edmx>
要解决此问题,必须确保{-{1}}和StorageEntityContainer
在C-S空间中匹配。在上面的示例中,它是CdmEntityContainer
和SamDbStoreContainer
答案 3 :(得分:1)
听起来您的配置存在问题,或者其中一个实体框架文件已损坏。
修复它的最快方法可能是删除模型,确保删除配置文件中对它的所有引用,然后从数据库重新生成模型。
答案 4 :(得分:0)
尝试禁用模型中的外键列。
答案 5 :(得分:0)
对我来说,我有类似的错误:
Schema specified is not valid. Errors: \r\nEntities.MyModel.msl(203,12) : error 2009: Content not valid. The conceptual side Member or Property 'Unit' specified as part of this MSL does not exist in MetadataWorkspace.
我在两个地方都有我的UNIT:
<EntityTypeMapping TypeName="IsTypeOf(MyObjectCharacteristic)">
<MappingFragment StoreEntitySet="OBJECT_CHARACTERISTICS">
<ScalarProperty Name="Unit" ColumnName="UNIT" />
<ScalarProperty Name="ClassName" ColumnName="CLASSNAME" />
<ScalarProperty Name="MyObjectID" ColumnName="OBJECTID" />
</MappingFragment>
</EntityTypeMapping>
<EntitySet Name="OBJECT_CHARACTERISTICS" EntityType="Self.OBJECT_CHARACTERISTICS" store:Type="Views" store:Schema="DBA">
<DefiningQuery>SELECT
dbo.RESOURCE.OBJECTID,
dbo.RESOURCE.CLASSNAME,
dbo.RESOURCE.UNIT
FROM dbo.RESOURCE
</DefiningQuery>
</EntitySet>
另外,我必须确保表示数据库表的对象的关联类实体详细信息具有UNIT数据成员:
<EntitySetMapping Name="ObjectCharacteristics">
<EntityTypeMapping TypeName="IsTypeOf(ObjectCharacteristic)">
<ScalarProperty Name="Unit" ColumnName="UNIT" />
<ScalarProperty Name="ClassName" ColumnName="CLASSNAME" />
<ScalarProperty Name="ObjectId" ColumnName="OBJECTID" />
</EntityTypeMapping>
</EntitySetMapping>
而且,
<EntityType Name="ObjectCharacteristic" A:TypeAccess="Public" xmlns:a=""http://schemas.microsoft.com/ado/2006/04/codegeneration">
<Key>
<PropertyRef Name="ObjectId" />
</Key>
<Property Name="ObjectId" Type="String" />
<Property Name="ClassName" Type="String" />
<Property Name="Unit" Type="String" />
</EntityType>
答案 6 :(得分:0)
我也在使用Oracle和Entity Framework。最初从数据库生成模型时,出现此错误。我尝试从一个表开始,然后修改模型并一次添加一个表(这花了一段时间)。除〜8个左右的表外,此方法有效。我检查了外键,但没有发现任何可能引起问题的东西。最终在edmx图表编辑器中手动添加新实体,手动添加属性,以及将列手动映射到属性。
答案 7 :(得分:-1)
有时您必须重新启动 Visual Studio 才能在修复 EDMX 文件后清除此错误。