我在 CF 文档、常见问题解答、博客和 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>
呈现给这些序列化属性:
- RowVersion 和 EntityState 获取序列化属性。
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 爱好者!