1. Cloud development

型付けされたエンティティ

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

型付きエンティティは、実際のプロパティ値にマッピングされた宣言されたプロパティを通じて、一般的に使われるプロパティや関係に容易にアクセスできるようにします。

箱から出して、SDKによって出荷される以下のタイプ化されたエンティティが提供されます:

  • IAssetEntity
  • IFileEntity
  • IMailTemplateEntity
  • ISettingEntity
  • IUserEntity
  • IUserGroupEntity

新しい型付きエンティティタイプを作成する

すべての型付きエンティティインターフェースはITypedEntityインターフェースから継承しなければなりません。インターフェースの実装は不要で、初回使用時に実行時に生成・キャッシュされます。

性質

宣言されたプロパティは、値をキャストする際の例外を避けるために、Content Hubがサポートする型(string、bool、int、long、decimal、DateTime、DateTimeOffset、JToken、...)を使用するべきです。

宣言されたプロパティ名は、エンティティ定義自体で定義されたプロパティ名と一致しているはずです。命名スキーマや命名規則の関係でそれができない場合は、TypedEntityPropertyAttributeを使って上書きすることが可能です。

もしプロパティが読み取り専用であるべきなら、セッターを省略するのは正当です。

文化依存性は一般的なCultureSensitive 型を用いて宣言できます。型や名称に関する同じルールがこれらのプロパティにも適用されます。

public interface ISampleEntity : ITypedEntity { string StringProperty { get; set; } decimal DecimalProperty { get; set; }

TypedEntityProperty("Some.Different.Property.Name") string StringPropertyNameOverridden { get; set; }

string ReadonlyStringProperty { get; }

string ReadonlyStringProperty { get; }

CultureSensitive CultureSensitiveString { get; } }

関係

リレーションはジェネリック型ToOneRelation 型と型ToManyRelation 型を用いて宣言できます。

プロパティについては、リレーションの宣言されたプロパティ名はエンティティ定義で指定された名前と同等であるべきです。それができない場合は、TypedEntityRelationAttributeもここで名前を上書きできます。

public interface ISampleEntity : ITypedEntity { ToOneRelation TestToTest { get; }

ToManyRelation TestToTests { get; } }

既存の型付けエンティティを拡張する

既存の型付きエンティティタイプを拡張したい場合は、単にそのタイプから継承し、上記のように自分のプロパティや関係を追加するだけで可能です。

public interface ICustomAssetEntity : IAssetEntity { string CustomProperty { get;set; } }

型付けされたエンティティのインスタンスを作成する

型付きエンティティは、IMClientインスタンスのTypedEntityFactoryを用いて解決できます:

var culture = new CultureInfo("en-US");

// Load asset from Content Hub instance var asset = await MClient.Entities.GetAsync(id);

// Turn received IEntity into typed IAssetEntity var typedAsset = MClient.TypedEntityFactory.FromEntity(asset); typedAsset.Title = "New title"; typedAsset.Descriptionculture = "English description";

await MClient.Entities.SaveAsync(typedAsset);

この記事を改善するための提案がある場合は、 お知らせください!