クライアント アプリケーションとして Entity Framework と Silverlight で RIA サービスを使用しています。部分クラスを介して EF エンティティのカスタム プロパティをいくつか取得しました。データベースには XML 型のフィールドがあり、Entity Framework に文字列としてマップされます。そして、部分クラスを使用して、この xml 文字列を実際のオブジェクトに逆シリアル化します。
これは、EF 構成エンティティの部分クラスです。
public partial class Configuration
{
private ServiceCredentials _serviceCredentialsObject;
[DataMember]
public ServiceCredentials ServiceCredentialsObject
{
get
{
return this._serviceCredentialsObject
?? (this._serviceCredentialsObject = this.DeserializeServiceCredentialsToObject());
}
set
{
this._serviceCredentialsObject = value;
this.SerializeServiceCredentialsObject();
}
}
public ServiceCredentials DeserializeServiceCredentialsToObject()
{
if (string.IsNullOrEmpty(this.ServiceCredentials))
{
return null;
}
var result = XmlSerializerHelper.Deserialize<ServiceCredentials>(this.ServiceCredentials);
result.FileEncoding = result.FileEncoding ?? Encoding.UTF8;
return result;
}
public void SerializeServiceCredentialsObject()
{
if (this.ServiceCredentialsObject == null)
{
this.ServiceCredentials = null;
return;
}
this.ServiceCredentials = XmlSerializerHelper.Serialize(this.ServiceCredentialsObject);
}
}
そして、これは私がデシリアライズしようとしているオブジェクトです:
[Serializable]
public class ServiceCredentials
{
public NetworkCredential Credential { get; set; }
public Encoding FileEncoding { get; set; }
[XmlIgnore]
public long HistoryID { get; set; }
public string LoadFileStoragePath { get; set; }
public string ManualLoadFilePath { get; set; }
public bool NeedAuthorization { get; set; }
[XmlIgnore]
public string ProviderID { get; set; }
public string SourceUrl { get; set; }
public bool AutomaticTransferToProductive { get; set; }
}
生成されたコードを使用して Silverlight クライアント側で Configuration Entity を使用しようとすると、Configuration クラスに ServiceCredentialsObject がないという問題が見つかります。また、新しいものを作成しても DomainService.metadata.cs に追加されません。ServiceCredentialsObject を DomainService.metadata.cs に手動で追加すると、再構築後にクライアント側でアクセスできますが、単純なタイプのプロパティしか見つかりません。たとえば、HistoryID、SourceUrl、AutomaticTransferToProductive にアクセスできますが、生成されたプロパティはありません。
public NetworkCredential クレデンシャル { get; 設定; } パブリック エンコーディング FileEncoding { get; 設定; }
どうすればこれを修正できますか?