簡體   English   中英

Silvelight&RIA Services&Entity Framework存在局部類和復雜類型的問題

[英]Silvelight&RIA Services&Entity Framework problems with partial classes and complex types there

我正在將RIA Services與Entity Framework和Silverlight用作客戶端應用程序。 我已經通過部分類為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,但沒有生成的屬性

公共NetworkCredential憑據{get; 組; } public Encoding FileEncoding {get; 組; }

我怎樣才能解決這個問題?

我找到了解決此問題的唯一方法。 解決方案只是在客戶端從實體框架反序列化xml字段。 我已經在Silverlight中為生成的代碼創建了部分類Configuration。 我不知道這是否是最好的解決方案,但是它可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM