标签:c entity-framework t4 edmx csdl
我想在我的* .csdl中使用“Using”元素来导入另一个命名空间,并使用POCO来转换对象.
我使用CSDL看起来像这样:
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm"
xmlns:cg="http://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
Namespace="BooksModel" Alias="Self">
<Using Namespace="BooksModel.Extended" Alias="BMExt" />
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
</EntityContainer>
<EntityType Name="Publisher">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false" />
<Property Type="BMExt.Address" Name="Address" Nullable="false" />
</EntityType>
</Schema>
(http://msdn.microsoft.com/en-us/library/bb738545.aspx)
但是,当我使用模板(POCO)来转换我的CSDL时,运行工具会抛出转换错误:
Running transformation: No schema encountered with
‘BooksModel.Extended’ namespace. Make sure the namespace is correct or
the schema defining the namespace is specified.Running transformation: Unknown namespace or alias
(BooksModel.Extended).
我像这样加载我的CSDL:
var inputFile = @"CSDL_NAME.csdl";
var ItemCollection = loader.CreateEdmItemCollection(inputFile);
如何修改模板以包含未知名称空间?
解决方法:
错误背后的问题是您没有加载EdmItemCollection中的其他CSDL文件.解决方案是将一个String []加载到EdmItemCollection,其中包含必要的CSDL文件(包括带有导入的命名空间的文件)的路径.
在代码中,它看起来像这样:
List<string> lstCsdlPaths = new List<string>();
lstCsdlPaths.Add(@"path\CSDLBase.csdl");
lstCsdlPaths.Add(@"path\CSDLImports.csdl");
var ItemCollection = new EdmItemCollection(lstCsdlPaths.ToArray());
标签:c,entity-framework,t4,edmx,csdl 来源: https://codeday.me/bug/20190704/1376352.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。