2

CF ドキュメント、FAQ、ブログ、および SO エントリのあらゆる場所を検索しましたが、このモデルの理由をまだ理解できません。

    <cf:project defaultNamespace="Humanisme" xmlns:cf="http://www.softfluent.com/codefluent/2005/1" xmlns:cfx="http://www.softfluent.com/codefluent/modeler/2008/1" xmlns:cfom="http://www.softfluent.com/codefluent/producers.model/2005/1" xmlns:cfps="http://www.softfluent.com/codefluent/producers.sqlserver/2005/1" xmlns:cfsm="http://www.softfluent.com/codefluent/producers.servicemodel/2007/1" defaultKeyPropertyTypeName="int" defaultMaxLength="240" persistencePropertyNameFormat="{1}" createDefaultMethodForms="true" createDefaultApplication="false" createDefaultHints="false">
  <cf:import path="Default.Surface.cfp" />
  <cf:producer name="Business Object Model (BOM)" typeName="CodeFluent.Producers.CodeDom.CodeDomProducer, CodeFluent.Producers.CodeDom">
    <cf:configuration compileWithVisualStudio="true" compile="false" codeDomProviderTypeName="CSharp" targetDirectory="..\Humanisme.classes" produceWebMembershipProvider="false" produceWebProfileProvider="false" produceWebBasicAuthenticationModule="false" cfx:targetProject="..\Humanisme.classes\Humanisme.classes.csproj" cfx:targetProjectLayout="Update">
      <subProducer typeName="CodeFluent.Producers.ServiceModel.ServiceProducer, CodeFluent.Producers.ServiceModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1bb6d7cccf1045ec" compileWithVisualStudio="true" compile="false" codeDomProviderTypeName="CSharp" targetDirectory="..\Humanisme.webApi" silverlightTargetVersion="Unspecified" dataAnnotationsProductionModes="NoAnnotations, All" jsonOptions="EnableJson" outputName="HumanismeService" cfx:targetProject="..\Humanisme.webApi\Humanisme.webApi.csproj" cfx:targetProjectLayout="Update" produceProxy="False" />
    </cf:configuration>
  </cf:producer>

(....)

<cf:entity name="EtapaVital" namespace="Humanisme" categoryPath="/Humanisme">
    <cf:property name="Id" key="true" />
    <cf:property name="Nom" />
    <cf:property name="Idioma" typeName="{0}.EtapaVitalIdiomaCollection" relationPropertyName="Etapa" />
    <cf:property name="Documents" typeName="{0}.DocumentCollection" relationPropertyName="EtapaVital" />
  </cf:entity>

次のシリアル化属性にレンダリングします。

  1. RowVersion と EntityState はシリアライズ属性を取得します。
  2. EntityDisplayName はありません。

    [System.Runtime.Serialization.DataMemberAttribute(Order=2147483647)]
    private CodeFluent.Runtime.CodeFluentEntityState _entityState;
    
            public EtapaVital()
    
            [System.Runtime.Serialization.DataMemberAttribute()]
            public virtual string EntityKey
            {
                get
                {
                    return this.Id.ToString();
                }
                set
                {
                    this.Id = ((int)(ConvertUtilities.ChangeType(value, typeof(int), -1)));
                }
            }
    
            public virtual string EntityDisplayName
            {
                get
                {
                    return this.Nom;
                }
            }
    
            [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
            [System.ComponentModel.DataObjectFieldAttribute(false, true)]
            [System.ComponentModel.TypeConverterAttribute(typeof(CodeFluent.Runtime.Design.ByteArrayConverter))]
            [System.Runtime.Serialization.DataMemberAttribute()]
            public byte[] RowVersion
            {
                get
                {
                    return this._rowVersion;
                }
                set
                {
                    if (((value != null) 
                                && (value.Length == 0)))
                    {
                        value = null;
                    }
                    this._rowVersion = value;
                    this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("RowVersion"));
                }
            }
    
            [System.ComponentModel.DefaultValueAttribute(((int)(-1)))]
            [System.Xml.Serialization.XmlElementAttribute(IsNullable=false, Type=typeof(int))]
            [System.ComponentModel.DataObjectFieldAttribute(true)]
           [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=100)]
            public int Id
            {
                get
                {
                    return this._id;
                }
                set
                {
                    if ((System.Collections.Generic.EqualityComparer<int>.Default.Equals(value, this._id) == true))
                    {
                        return;
                    }
                    int oldKey = this._id;
                    this._id = value;
                    try
                    {
                        this.OnCollectionKeyChanged(oldKey);
                    }
                    catch (System.ArgumentException )
                    {
                        this._id = oldKey;
                        return;
                    }
                    this.EntityState = CodeFluent.Runtime.CodeFluentEntityState.Modified;
                    this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("Id"));
                }
            }
    
            [System.ComponentModel.DefaultValueAttribute(default(string))]
            [System.Xml.Serialization.XmlElementAttribute(IsNullable=true, Type=typeof(string))]
            [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, Order=200)]
            public string Nom
            {
                get
                {
                    return this._nom;
                }
                set
                {
                    this._nom = value;
                    this.EntityState = CodeFluent.Runtime.CodeFluentEntityState.Modified;
                    this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("Nom"));
                }
            }
    
            [System.Xml.Serialization.XmlIgnoreAttribute()]
            public Humanisme.EtapaVitalIdiomaCollection Idioma
            {
                get
                {
                    if ((this._idioma == null))
                    {
                        if (((this.Id == -1) 
                                    || (this.EntityState.Equals(CodeFluent.Runtime.CodeFluentEntityState.Created) == true)))
                        {
                            this._idioma = new Humanisme.EtapaVitalIdiomaCollection(this);
                            return this._idioma;
                        }
                        this._idioma = Humanisme.EtapaVitalIdiomaCollection.LoadByEtapa(this);
                    }
                    return this._idioma;
                }
            }
    
            [System.Xml.Serialization.XmlIgnoreAttribute()]
            public Humanisme.DocumentCollection Documents
            {
                get
                {
                    if ((this._documents == null))
                    {
                        if (((this.Id == -1) 
                                    || (this.EntityState.Equals(CodeFluent.Runtime.CodeFluentEntityState.Created) == true)))
                        {
                            this._documents = new Humanisme.DocumentCollection(null, this);
                            return this._documents;
                        }
                        this._documents = Humanisme.DocumentCollection.LoadByEtapaVital(this);
                    }
                    return this._documents;
                }
            }
    
    
            public virtual CodeFluent.Runtime.CodeFluentEntityState EntityState
            {
                get
                {
                    return this._entityState;
                }
                set
                {
                    if ((System.Collections.Generic.EqualityComparer<CodeFluent.Runtime.CodeFluentEntityState>.Default.Equals(value, this.EntityState) == true))
                    {
                        return;
                    }
                    if (((this._entityState == CodeFluent.Runtime.CodeFluentEntityState.ToBeDeleted) 
                                && (value == CodeFluent.Runtime.CodeFluentEntityState.Modified)))
                    {
                        return;
                    }
                    if (((this._entityState == CodeFluent.Runtime.CodeFluentEntityState.Created) 
                                && (value == CodeFluent.Runtime.CodeFluentEntityState.Modified)))
                    {
                        return;
                    }
                    this._entityState = value;
                    this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("EntityState"));
                }
            }
    

モデル サーフェスの [プロパティ] ウィンドウに関連するプロパティ オプションがないようで、cfp ファイルで xml タグまたは属性を見つけることができません。

クラスでこれらの出力につながる CodeFluent モデル オプションの学習を開始する手がかりや参照を教えていただければ、非常に感謝しています。

繰り返しになりますが、私は本当に CodeFluent の熱狂的なファンになりつつあります!

4

1 に答える 1

1

同時実行モードを( documentation ) に設定したため、RowVersionプロパティは CodeFluent Entities によって生成されます。このプロパティの最新の値がない場合、エンティティ ( ) を保存できません。したがって、このプロパティはシリアル化する必要があります。OptimisticCodeFluentConcurrencyException

EntityDisplayNameUI 用です。その値は、1 つまたは複数のプロパティから計算されます。したがって、クライアント側で計算できるため、シリアル化する必要はありません。

現在、これらの特定のプロパティのシリアル化動作を変更する属性はありません。ただし、カスタム サブ プロデューサーを記述して、プロパティのシリアル化属性を追加/削除することができます。プロパティに Json.NET 固有の属性を追加する例があります ( GitHub ) 。

シリアル化の動作を変更するためのいくつかの属性を次に示します。

  • serializable(Entity): このエンティティがシリアライズ可能としてマークされているかどうかを判断します
  • serializeEntityKey(エンティティ): EntityKey をシリアル化する必要があるかどうかを決定します
  • serializeTypeName(エンティティ): TypeName をシリアル化する必要があるかどうかを決定します
  • serializationMode(プロパティ):ドキュメント
  • dataMemberまたはincludeInSerialization(プロパティ)=>使用することを好むserializationMode
  • serializationOrder(プロパティ): シリアル化されたときのこのプロパティの並べ替え順序を定義します
  • serializationNullable(プロパティ): シリアル化時にプロパティをスキップできるかどうかを決定します
  • serializePrivateMember(プロパティ): シリアル化できないプロパティのプライベート フィールドがシリアル化可能かどうかを判断します。
  • publicSerializationCallbacks(プロジェクト): シリアライゼーション コールバック メソッドがパブリックかどうかを決定します ( OnEntityDeserializingOnEntityDeserializedなど)。
于 2016-03-14T09:56:06.897 に答える