2016-03-29 19 views
0

我開發了一個包含兩種靜態數據類型(IClient和IClientHour)的包。其中一種靜態數據類型(IClientHour)對另一種靜態數據類型(IClient)具有依賴性。通過包安裝具有依賴關係的靜態數據類型

我試圖通過一個包將數據類型添加到Composite C1的實例中。我想利用DataTypePackageFragmentInstaller和DataTypePackageFragementUninstaller類來註冊和刪除我的數據類型與包。

我現在面臨的問題是,該包裝是無法驗證和吐出以下錯誤:

Failed to build data type descriptor for interface 'Builders.Data.IClientHour' The type 'Builders.Data.IClient' could not be found.

這兩種類型都在,我複製到通過FilePackageFragmentInstaller CMS中的DLL。在搜索Composite C1論壇時,我發現了一個建議,爲包含這些類型的程序集的File元素添加assemblyLoad =「true」。這個建議並沒有解決我面臨的問題。

下面是我的INSTALL.XML顯示相關的數據類型和裝配部分的濃縮版:

<mi:PackageFragmentInstallers> 
     <mi:Add installerType="Composite.Core.PackageSystem.PackageFragmentInstallers.FilePackageFragmentInstaller, Composite" uninstallerType="Composite.Core.PackageSystem.PackageFragmentInstallers.FilePackageFragmentUninstaller, Composite"> 
      <Files> 
       <File sourceFilename="~\Bin\Builders.dll" targetFilename="~\Bin\Builders.dll" allowOverwrite="false" assemblyLoad="true" /> 
      </Files> 
     </mi:Add> 

     <mi:Add installerType="Composite.Core.PackageSystem.PackageFragmentInstallers.DataTypePackageFragmentInstaller, Composite" uninstallerType="Composite.Core.PackageSystem.PackageFragmentInstallers.DataTypePackageFragmentUninstaller, Composite"> 
      <Types> 
       <Type name="Builders.Data.IClient, Builders" /> 
       <Type name="Builders.Data.IClientHour, Builders" /> 
      </Types> 
     </mi:Add> 
</mi:PackageFragmentInstallers> 

任何援助/與完成這一任務的建議是極大的讚賞。

回答

1

在對CodePlex提出同樣的問題後,wysocki和burningice能夠帶領我朝着正確的方向改正我面臨的問題。

簡而言之,我使用了一個字符串來引用IClientHour數據類型中IClient數據類型的類型。如果使用字符串,則還必須在引用中包含程序集名稱(例如Builders.Data.IClient,Builders)。

根據複合C1的示例和burnice的指導,您應該避免使用字符串,而應該使用typeof引用您的外鍵。

下面是我如何orginally試圖引用我的數據類型的例子:

[ForeignKey("Builders.Data.IClient", AllowCascadeDeletes = true, NullReferenceValue = "{00000000-0000-0000-0000-000000000000}")]

這是我應該如何使用字符串已引用它:

[ForeignKey("Builders.Data.IClient, Builders", AllowCascadeDeletes = true, NullReferenceValue = "{00000000-0000-0000-0000-000000000000}")]

每複合C1的例子和來自burnice的指導這是你應該如何引用另一種數據類型(注意:當使用這種方法時,你還必須包括你想在關係中使用的字段的名稱):

[ForeignKey(typeof(Builders.Data.IClient), "Id", AllowCascadeDeletes = true, NullReferenceValue = "{00000000-0000-0000-0000-000000000000}")]

參考文獻:

的CodePlex論壇主題:http://compositec1.codeplex.com/discussions/652976

複合文檔:http://docs.composite.net/Console/Static-IData-Types/Example2