2016-05-18 2 views
0

Как настроить runfluent runtime в odrder для подключения пользовательского класса, который наследуется от FileSystemBinaryLargeObject?Как зарегистрировать пользовательскую файловую системуBinaryLargeObject

В нашем случае мы имеем сущность с файлами более 100 КБ. Мне нужно, чтобы выяснить, как кусок их в поддиректории ..

Благодаря

ответ

0

Для всех субъектов:

<configuration> 
<configSections> 
    <section name="MyDefaultNamespace" type="CodeFluent.Runtime.CodeFluentConfigurationSectionHandler, CodeFluent.Runtime" /> 
</configSections> 
<MyDefaultNamespace ... other attributes ... 
    binaryServicesTypeName="CustomBinaryServices, Assembly" 
    binaryServicesEntityConfigurationTypeName="CustomBinaryServicesConfiguration, Assembly" 
    /> 
</configuration> 

Для конкретного объекта:

<configuration> 
<configSections> 
    <section name="MyDefaultNamespace" type="CodeFluent.Runtime.CodeFluentConfigurationSectionHandler, CodeFluent.Runtime" /> 
</configSections> 
<MyDefaultNamespace ... other attributes ... > 
    <binaryServices entityFullTypeName="MyDefaultNamespace.MyNamespace.MyEntity" 
    binaryServicesTypeName="CustomBinaryServices, Assembly" 
    binaryServicesEntityConfigurationTypeName="CustomBinaryServicesConfiguration, Assembly"/> 
</MyDefaultNamespace> 
</configuration> 
0

Я считаю, что вы предлагаете не работает. Я протестировал его, чтобы увидеть, что мой пользовательский класс blob не получает экземпляр.

В соответствии с приведенным ниже кодом атрибут @binaryServicesTypeName принимает только 4 предопределенных строковых значения : azure, azure2, файловая система, skydrive.

В противном случае устанавливается объект blob по умолчанию «SqlServerBinaryLargeObject».

/// <summary> 
/// Gets or sets the type name of the class deriving from the BinaryLargeObject class. 
///    Based on the 'typeName' Xml attributes from the configuration file. 
///    The default is SqlServerBinaryLargeObject. 
/// 
/// </summary> 
/// 
/// <value> 
/// The configured type name. 
/// </value> 
public virtual string TypeName 
{ 
    get 
    { 
    if (this._typeName == null) 
    { 
     string defaultValue = (string) null; 
     if (this._configuration.PersistenceHook != null) 
     defaultValue = this._configuration.PersistenceHook.BinaryLargeObjectTypeName; 
     if (string.IsNullOrEmpty(defaultValue)) 
     defaultValue = typeof (SqlServerBinaryLargeObject).AssemblyQualifiedName; 
     this._typeName = XmlUtilities.GetAttribute((XmlNode) this.Element, "binaryServicesTypeName", defaultValue); 
     if (this._typeName == null) 
     this._typeName = XmlUtilities.GetAttribute((XmlNode) this.Element, "typeName", defaultValue); 
     if (this._typeName != null && string.Compare(this._typeName, "azure", StringComparison.OrdinalIgnoreCase) == 0) 
     this._typeName = "CodeFluent.Runtime.Azure.AzureBinaryLargeObject, CodeFluent.Runtime.Azure"; 
     if (this._typeName != null && string.Compare(this._typeName, "azure2", StringComparison.OrdinalIgnoreCase) == 0) 
     this._typeName = "CodeFluent.Runtime.Azure.AzureBinaryLargeObject, CodeFluent.Runtime.Azure2"; 
     if (this._typeName != null && string.Compare(this._typeName, "filesystem", StringComparison.OrdinalIgnoreCase) == 0) 
     this._typeName = typeof (FileSystemBinaryLargeObject).AssemblyQualifiedName; 
     if (this._typeName != null && string.Compare(this._typeName, "skydrive", StringComparison.OrdinalIgnoreCase) == 0) 
     this._typeName = typeof (SkyDriveBinaryLargeObject).AssemblyQualifiedName; 
    } 
    return this._typeName; 
    } 
    set 
    { 
    this._typeName = value; 
    } 
} 

другие идеи?

PS: здесь app.config демо-файл, используя сгенерированные схемы для выполнения codefluent

app.config