日本語版
最新ニュース
企業

方法: カスタム精度で Decimal メタフィールドを作成する

カタログ システムを使用している場合、メタフィールドの作成方法は簡単です。実際、「メタフィールド」のことは忘れても問題ありません。使用する必要があるのは、型指定されたコンテンツ タイプだけです。この属性をプロパティに追加するだけで、希望どおりに精度を設定できます。 [DecimalSettings(10, 2)] public virtual Decimal MyAttributesDecimal { get; set; }オーダーシステムを使用している場合は少し異なります。使用できる厳密に型指定された注文タイプがありません。メタフィールドの作成を自動化するには、基盤となる MetaField API を自分で使用する必要があります。おそらく、メタフィールドを作成し、それを目的のメタクラスに追加する方法はご存知でしょう。 var metaField = MetaField.Create(MetaDataContext.Instance, "Mediachase.Commerce.Orders.System.Shipment", "NewMetaField3", "new", "temp", MetaDataType.Decimal, 17, true, true, false, false); var metaClass = MetaClass.Load(MetaDataContext.Instance, "ShipmentEx"); metaClass.AddField(metaField);ただし、この方法で作成されたメタフィールドはデフォルトの (18, 0)…

方法: カスタム精度で Decimal メタフィールドを作成する

1737371745
2025-01-16 09:36:00

カタログ システムを使用している場合、メタフィールドの作成方法は簡単です。実際、「メタフィールド」のことは忘れても問題ありません。使用する必要があるのは、型指定されたコンテンツ タイプだけです。この属性をプロパティに追加するだけで、希望どおりに精度を設定できます。

        [DecimalSettings(10, 2)]
        public virtual Decimal MyAttributesDecimal { get; set; }

オーダーシステムを使用している場合は少し異なります。使用できる厳密に型指定された注文タイプがありません。メタフィールドの作成を自動化するには、基盤となる MetaField API を自分で使用する必要があります。おそらく、メタフィールドを作成し、それを目的のメタクラスに追加する方法はご存知でしょう。

            var metaField = MetaField.Create(MetaDataContext.Instance, "Mediachase.Commerce.Orders.System.Shipment", "NewMetaField3", "new", "temp",
                MetaDataType.Decimal, 17, true, true, false, false);
            var metaClass = MetaClass.Load(MetaDataContext.Instance, "ShipmentEx");
            metaClass.AddField(metaField);

ただし、この方法で作成されたメタフィールドはデフォルトの (18, 0) 精度でメタクラスに追加されますが、これは一種の意味がありません。 10 進メタフィールドの精度を制御するにはどうすればよいですか?

ちょっとした秘密は MetaField.Attributes にあります。 10 進数タイプの精度を制御する属性には、MdpPrecision と MdpScale の 2 つがあります。これらは、メタフィールドの作成後、メタクラスに追加される前に設定する必要があります (理由は単純です。テーブルに列を追加する基礎となるクエリは、列の精度を設定するためにこれらの値を検索します)。コードは次のようになります。

var metaField = MetaField.Create(MetaDataContext.Instance, "Mediachase.Commerce.Orders.System.Shipment", "NewMetaField5", "new", "temp",
    MetaDataType.Decimal, 17, true, true, false, false);
metaField.Attributes["MdpPrecision"] = "38";
metaField.Attributes["MdpScale"] = "9";
var metaClass = MetaClass.Load(MetaDataContext.Instance, "ShipmentEx");
metaClass.AddField(metaField);

小さいながらも覚えておくべき重要な注意事項: 1 つをデフォルト値のままにする場合でも、両方の属性を設定する必要があります。

そして多田さん!

#方法 #カスタム精度で #Decimal #メタフィールドを作成する

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。