[英]Unable to cast object of type 'Microsoft.OData.Edm.Csdl.CsdlSemantics.UnresolvedType' to type 'Microsoft.OData.Edm.IEdmCollectionType'
在Visual Studio 2013中,我使用Nuget中的OData客戶端代碼生成器來使用OData V4端點。 出乎意料的是,本周t4模板給出了錯誤:無法將類型為“Microsoft.OData.Edm.Csdl.CsdlSemantics.UnresolvedType”的對象強制轉換為“Microsoft.OData.Edm.IEdmCollectionType”。
我正在使用7個OData端點,並且只有其中一個在后端需要重新保存* .tt文件的更新。 保存后出現錯誤並將輸出* .cs文件留空。 然后,我嘗試在OData端點保存一個沒有模型更改的* .tt文件,以查看它的行為方式。 思考過程可能是端點模型的變化可能與客戶端代碼生成器不兼容。 不幸的是,一個失敗並產生了一個空白的* .cs文件以及相同的錯誤。
幸運的是,所有內容都使用git進行版本控制,我能夠回滾文件以保持項目正常運行。
將此放在此處以防其他任何人升級他們的OData客戶端代碼生成器並感到沮喪。
問題原來是從以下版本升級:OData Client T4 Template ver。 2.2.0到OData客戶端T4模板版本。 2.4.0
在版本之間添加了一些新項目,使您的舊* .TTInclude文件無效。
解決問題的步驟
上述步驟應該可以解決問題。
我注意到其中一個變化的一些變化。
在ttinclude中添加了一個新的命名空間
<#@ Import Namespace="Microsoft.OData.Edm.Vocabularies.Community.V1" #>
添加了一個新的DeclaredValueTerm:
tmp.FindDeclaredValueTerm(AlternateKeysVocabularyConstants.AlternateKeys) != null)
一種新的抽象方法:
internal abstract void WriteEntityTypeAttribute();
以及一些其他雜項,使您以前的模板無效。 希望這對任何為OData V4升級OData客戶端代碼生成器的人都有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.