繁体   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