This question is locked. New answers and comments are not allowed.
Have exception when map dictionary frome base class:
Code:
Telerik.OpenAccess.Exceptions.MetadataException was unhandled
HResult=-2146233088
Message=Mapping for field '<
Details
>k__BackingField' is specified in the file 'config', but the field is not present in the class 'MyNamespace.Class'. --> FromMetadataContainer/namespace[MyNamespace]/class[Class]/field[<
Details
>k__BackingField]
Source=Telerik.OpenAccess
CanRetry=true
ClassName=MyNamespace.Class
Column=0
Context=--> FromMetadataContainer/namespace[MyNamespace]/class[Class]/field[<
Details
>k__BackingField]
ErrorId=2
FieldName=<
Details
>k__BackingField
FileName=config
IsWarning=false
Line=0
StackTrace:
в Telerik.OpenAccess.SPI.Backends.ThrowException(Exception e)
в OpenAccessRuntime.ExceptionWrapper.Throw()
в OpenAccessRuntime.storagemanager.StorageManagerFactoryBuilder.createSmfForURL()
в OpenAccessRuntime.storagemanager.StorageManagerFactoryBuilder.createStorageManagerFactory()
в OpenAccessRuntime.DataObjects.tools.ant.DataObjectsTaskBase.execute()
в OpenAccessRuntime.DataObjects.tools.ant.SchemaMigrationTask.execute()
в OpenAccessRuntime.OpenAccessSchemaAdapter.CreateUpdateDDLScript(SchemaUpdateProperties schemaUpdateProps)
в OpenAccessRuntime.SchemaHandlerImpl.Telerik.OpenAccess.ISchemaHandler.CreateUpdateDDLScript(SchemaUpdateProperties props)
в MyNamespace.DataModelContext.UpdateSchema() в c:\PAGGIT\testProj\ForTests\Program.cs:строка 95
в MyNamespace.Programm.Main() в c:\PAGGIT\testProj\ForTests\Program.cs:строка 20
в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:
protected override IList<
MappingConfiguration
> PrepareMapping()
{
List<
MappingConfiguration
> preparedConfigs = new List<
MappingConfiguration
>();
//Маппинг базового класса
MappingConfiguration<
BasicDataBaseItem
> basicDataBaseItemConfiguration = new MappingConfigurationWithNamingRules<
BasicDataBaseItem
>();
basicDataBaseItemConfiguration.MapType(p => new
{
UniqID = p.UniqID,
Name = p.Name,
Description = p.Description,
CreateDateTime = p.CreateDateTime,
UpdateDateTime = p.UpdateDateTime
}).Inheritance(InheritanceStrategy.Horizontal);
basicDataBaseItemConfiguration.HasProperty(p => p.Name).IsNotNullable();
basicDataBaseItemConfiguration.HasProperty(p => p.CreateDateTime).IsCalculatedOn(DateTimeAutosetMode.Insert);
basicDataBaseItemConfiguration.HasProperty(p => p.UpdateDateTime).IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate);
MappingConfiguration<
Class
> classConfiguration = new MappingConfiguration<
Class
>();
classConfiguration.MapType(p => new
{
UniqID = p.UniqID,
ParentClassID = p.ParentClassID,
}).ToTable("Class");
classConfiguration.MapType().ToTable("Class");
classConfiguration.HasProperty(p => p.UniqID).IsIdentity().ToColumn("UniqID");
classConfiguration.HasAssociation(p => p.ParentClass).HasConstraint((p, c) => p.ParentClassID == c.UniqID);
classConfiguration.HasProperty(p => p.Details).WithDictionaryKey("Key", "nvarchar(255)").WithDictionaryValue("Value", "nvarchar(Max)").WithForeignKey("ClassId", "uniqueidentifier").WithTable("ClassDetails");
preparedConfigs.Add(basicDataBaseItemConfiguration);
preparedConfigs.Add(classConfiguration);
return preparedConfigs;
}
public abstract class BasicDataBaseItem
{
public Guid UniqID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime CreateDateTime { get; set; }
public DateTime UpdateDateTime { get; set; }
public IDictionary<
string
, string> Details { get; set; }
}
public class Class : BasicDataBaseItem
{
public Class ParentClass { get; set; }
public IList<
Class
> ChildClasses { get; set; }
public Guid? ParentClassID { get; set; }
public Guid UniqID { get; set; }
public Class()
{
ChildClasses = new List<
Class
>();
}
}