No metadata has been registered for class LocationsModule.Model.LocationItem.
Hi,
I tried to develop a Locations module provided here: http://www.sitefinity.com/blogs/joshmorales/posts/11-07-07/creating_sitefinity_4_content_modules_part_1_project_preparation_and_hello_world.aspx
I followed all 5 steps mentioned in that series including enhancing the project for OpenAccess specified here: http://www.telerik.com/help/openaccess-orm/fluent-mapping-getting-started-fluent-mapping-api.html.
I am still getting the saying 'No metadata has been registered for class LocationsModule.Model.LocationItem.(This usually indicates, that either this class is not declared persistent or it is declared persistent but not enhanced. The class was loaded from file:///C:/Users/user/Desktop/ProjectManager_4.1.1533.0__E-Commerce_Preview/Projects/ECommTest/bin/LocationsModule.DLL.)'
Is there anything else that I am missing for creating this Locations module? I searched on the forums but didn't find the solution.
Hi Sachin,
To enhance it review the .csproj file of the module. It should look like this.
<UserProperties OpenAccess_ConfigFile="App.config" OpenAccess_ConnectionId="DatabaseConnection1" OpenAccess_Enhancing="True" OpenAccess_UpdateDatabase="False" OpenAccess_EnhancementOutputLevel="1" /> </VisualStudio> </ProjectExtensions> <PropertyGroup> <PostBuildEvent> </PostBuildEvent> <PreBuildEvent> </PreBuildEvent> </PropertyGroup> <PropertyGroup> <OpenAccessPath>$(SolutionDir)..\..\..\..\..\Common\Dependencies\</OpenAccessPath> </PropertyGroup> <Import Condition="Exists('$(OpenAccessPath)\OpenAccess.targets')" Project="$(OpenAccessPath)\OpenAccess.targets" /></Project>I am running into the same issues and the above did not fix anything. Any other insights? Did you ever resolve this issue?
Chris,
It fixed this problem. You need to add <VisualStudio> <ProjectExtensions> before the code mentioned above and change the OpenAccessPath to the directory where you installed OpenAccess. Now I am working on the error “error parsing the template” when I added the front end control to the page even though I have registered it 's virtual path in Global.asax.
Will you please give me an example of your .csproj file. I changed the OpenAccessPath to my local installed directory, but I still get the error. I also get show an error (Red Underlined) of the <OpenAccessPath> is that normal? I appreciate the help, I am very new to Sitefinity, like 2 days.
<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProductVersion>8.0.30703</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>C0006634-E36A-45D7-8931-B8FCD0350665</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>LocationsModule</RootNamespace> <AssemblyName>LocationsModule</AssemblyName> <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.configuration" /> <Reference Include="System.Core" /> <Reference Include="System.Drawing" /> <Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Web" /> <Reference Include="System.Web.Extensions" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> <Reference Include="Telerik.OpenAccess"> <HintPath>..\bin\Telerik.OpenAccess.dll</HintPath> </Reference> <Reference Include="Telerik.OpenAccess.35.Extensions"> <HintPath>..\bin\Telerik.OpenAccess.35.Extensions.dll</HintPath> </Reference> <Reference Include="Telerik.Sitefinity"> <HintPath>..\bin\Telerik.Sitefinity.dll</HintPath> </Reference> <Reference Include="Telerik.Sitefinity.Model"> <HintPath>..\bin\Telerik.Sitefinity.Model.dll</HintPath> </Reference> <Reference Include="Telerik.Web.UI"> <HintPath>..\bin\Telerik.Web.UI.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <Compile Include="Configuration\LocationsConfig.cs" /> <Compile Include="Data\LocationsManager.cs" /> <Compile Include="Data\OpenAccess\LocationsFluentMapping.cs" /> <Compile Include="Data\OpenAccess\LocationsFluentMetaDataSource.cs" /> <Compile Include="Data\OpenAccess\OpenAccessLocationsDataProvider.cs" /> <Compile Include="LocationsModule.cs" /> <Compile Include="Model\LocationItem.cs" /> <Compile Include="Model\LocationItemUrlData.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Web\Services\Data\LocationItemViewModel.cs" /> <Compile Include="Web\Services\LocationsBackendService.cs" /> <Compile Include="Web\UI\LocationsDefinitions.cs" /> <Compile Include="Web\UI\Public\Designers\LocationsViewDesigner.cs" /> <Compile Include="Web\UI\Public\DetailsView.cs" /> <Compile Include="Web\UI\Public\LocationsView.cs" /> <Compile Include="Web\UI\Public\MasterListView.cs" /> </ItemGroup> <ItemGroup> <Folder Include="obj\Debug\TempPE\" /> </ItemGroup> <ItemGroup> <Content Include="bin\Debug\AjaxControlToolkit.dll" /> <Content Include="bin\Debug\DirectShowLib-2005.dll" /> <Content Include="bin\Debug\DocumentFormat.OpenXml.dll" /> <Content Include="bin\Debug\LocationsModule.dll" /> <Content Include="bin\Debug\LocationsModule.pdb" /> <Content Include="bin\Debug\Microsoft.Practices.ServiceLocation.dll" /> <Content Include="bin\Debug\Microsoft.WindowsAzure.Diagnostics.dll" /> <Content Include="bin\Debug\Microsoft.WindowsAzure.ServiceRuntime.dll" /> <Content Include="bin\Debug\Microsoft.WindowsAzure.StorageClient.dll" /> <Content Include="bin\Debug\Telerik.OpenAccess.35.Extensions.dll" /> <Content Include="bin\Debug\Telerik.OpenAccess.dll" /> <Content Include="bin\Debug\Telerik.OpenAccess.Web.dll" /> <Content Include="bin\Debug\Telerik.Sitefinity.dll" /> <Content Include="bin\Debug\Telerik.Sitefinity.Model.dll" /> <Content Include="bin\Debug\Telerik.Sitefinity.Utilities.dll" /> <Content Include="bin\Debug\Telerik.Web.UI.dll" /> <Content Include="bin\Debug\Telerik.Windows.RadUploadHandler.dll" /> <Content Include="bin\Debug\Twitterizer2.dll" /> <Content Include="obj\Debug\LocationsModule.csproj.FileListAbsolute.txt" /> <Content Include="obj\Debug\LocationsModule.dll" /> <Content Include="obj\Debug\LocationsModule.pdb" /> <EmbeddedResource Include="Web\UI\Public\Resources\DetailsView.ascx"> <SubType>ASPXCodeBehind</SubType> </EmbeddedResource> <EmbeddedResource Include="Web\UI\Public\Resources\MasterListView.ascx" /> </ItemGroup> <ItemGroup> <None Include="obj\Debug\build.force" /> <None Include="obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Condition="Exists('$(MSBuildExtensionsPath)\OpenAccess.targets')" Project="$(MSBuildExtensionsPath)\OpenAccess.targets" /> <ProjectExtensions> <VisualStudio> <UserProperties OpenAccess_EnhancementOutputLevel="1" OpenAccess_UpdateDatabase="False" OpenAccess_Enhancing="True" OpenAccess_ConnectionId="DatabaseConnection1" OpenAccess_ConfigFile="App.config" /> </VisualStudio> </ProjectExtensions> <PropertyGroup> <PostBuildEvent> </PostBuildEvent> <PreBuildEvent> </PreBuildEvent> </PropertyGroup> <PropertyGroup> <OpenAccessPath>C:\Program Files\telerik\OpenAccess ORM\ProductSdk\Content\Common\Dependencies</OpenAccessPath> </PropertyGroup> <Import Condition="Exists('$(OpenAccessPath)\OpenAccess.targets')" Project="$(OpenAccessPath)\OpenAccess.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> --></Project>Mine looks close to yours however for the OpenAccessPath I dont have the "\ProductSdk\Content\Common\Dependencies" it ends up being "C:\Program Files\Telerik\OpenAccess ORM" I have a folder called sdk and that looks to have the OpenAccess.targets file that it is looking for. Could this be a version issue? I am using 4.1.1501.0. I am stumped here.
<ProjectExtensions> <VisualStudio> <UserProperties OpenAccess_EnhancementOutputLevel="1" OpenAccess_UpdateDatabase="False" OpenAccess_Enhancing="True" OpenAccess_ConnectionId="DatabaseConnection1" OpenAccess_ConfigFile="App.config" /> </VisualStudio> </ProjectExtensions> <PropertyGroup> <PostBuildEvent> </PostBuildEvent> <PreBuildEvent> </PreBuildEvent> </PropertyGroup> <PropertyGroup> <OpenAccessPath>C:\Program Files\Telerik\OpenAccess ORM</OpenAccessPath> </PropertyGroup> <Import Condition="Exists('$(OpenAccessPath)\OpenAccess.targets')" Project="$(OpenAccessPath)\OpenAccess.targets" />
Hi Chris,
Please check this thread that explains some of the reasons for the error "No metadata has been registered for class classname"
PropertyGroup should point to the location where you have OpenAccess.targets which reference the location of enhancer.exe and VEnhance which should be in the same folder.
Best wishes,
Ivan Dimitrov
the Telerik team
I installed the Sitefinity SDK and pointed the OpenAccessPath to the new installed location for the Enhancer. That appeared to work.
Sachin,
Did you figure out the "Error Parsing Template" because now I am getting the same error.
Hello Chris,
Can you tell me where did you get "Error Parsing Template" and what changes have you made before the error occurred. The usual cause is when modifying the frontend widget of the module which uses widget template. You can make changes to this widget template and adding something new at the wrong place results in "Error Parsing Template". Edit the widget template and restore it to defaults to fix the problem.
Regards,
Stanislav Velikov
the Telerik team
Stanislav - thanks for the tip!