1

已将 sql 数据库中的表映射到 Employee dbml 文件中的 linq。

[global::System.Runtime.Serialization.DataContractAttribute()]
public partial class tbEmployee
{

    private int _Employeeid;

    private string _EmployeeName;



    public tbEmployee()
    {
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_Employeeid", DbType = "Int NOT NULL")]
    [global::System.Runtime.Serialization.DataMemberAttribute(Order = 0)]
    public int EmployeeID
    {
        get
        {
            return this._PeriodContextRefId;
        }
        set
        {
            if ((this._Employeeid != value))
            {
                this._Employeeid = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage = "_EmployeeName", DbType = "NVarChar(2) NOT NULL", CanBeNull = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute(Order = 1)]
    public string EmployeeName
    {
        get
        {
            return this._EmployeeName;
        }
        set
        {
            if ((this._EmployeeName != value))
            {
                this._EmployeeName = value;
            }
        }
    }

}

在服务中我只是返回类型的对象

List<tbEmployee>

当我在我的客户中添加服务参考时,日期会员订单信息正在跳过。

当我使用 protobuf-net 进行序列化/反序列化时,它在我的客户端反序列化时会出现问题。

4

1 回答 1

0

是的,这很麻烦。有 2 个选项可以解决此问题;第一个(也是最简单的)是使用 WCF 在客户端和服务器之间共享合同程序集的能力。如果您可以共享 DTO 层,那将使事情变得简单。

第二种是在客户端添加额外的标记以提供线索。您可以通过一个partial类来执行此操作,例如在一个单独的代码文件中(不要编辑生成的文件):

namespace YourNamespace {
    [ProtoContract(DataMemberOffset = 1)] /* shift all DataMember orders */
    public partial class tbEmployee {}
}

一个更明确的替代方案是:

namespace YourNamespace {
    [ProtoPartialMember(1, "EmployeeID")]
    [ProtoPartialMember(2, "EmployeeName")]
    public partial class tbEmployee {}
}
于 2010-09-16T05:36:47.053 回答