点击或拖拽改变大小

PrimaryKeyAttribute 类

主键集合特性标记。
继承层次

命名空间:  XPatchLib
程序集:  XPatchLib (在 XPatchLib.dll 中) 版本:4.1.0.4
语法
C#
public sealed class PrimaryKeyAttribute : Attribute

PrimaryKeyAttribute 类型公开以下成员。

构造函数
  名称说明
公共方法PrimaryKeyAttribute
使用指定的主键名称初始化 PrimaryKeyAttribute 类的新实例。
Top
方法
  名称说明
公共方法GetPrimaryKeys
获取主键类型名称。
Top
备注
用来标记一个对象由哪些属性组合成为主键,用以判断对象是否相等,并在生成增量文档时作为标记。
示例

以下示例展示了如何使用属性作为主键。

C#
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace XPatchLib.Example
{
    public class PrimaryKeyAttribute
    {
        public static void Main(string[] args)
        {
            var list1 = new List<MulitPrimaryKeyClass>();
            var list2 = new List<MulitPrimaryKeyClass>();

            list1.Add(new MulitPrimaryKeyClass { Name = "Name1", Id = 1 });
            list1.Add(new MulitPrimaryKeyClass { Name = "Name2", Id = 2 });
            list1.Add(new MulitPrimaryKeyClass { Name = "Name3", Id = 3 });
            list1.Add(new MulitPrimaryKeyClass { Name = "Name4", Id = 4 });

            list2.Add(new MulitPrimaryKeyClass { Name = "Name1", Id = 1 });
            list2.Add(new MulitPrimaryKeyClass { Name = "Name2", Id = 2 });
            list2.Add(new MulitPrimaryKeyClass { Name = "Name5", Id = 5 });

            StringBuilder context = new StringBuilder();
            using (StringWriter strWriter = new StringWriter(context))
            {
                using (XmlTextWriter xmlWriter = new XmlTextWriter(strWriter))
                {
                    Serializer serializer=new Serializer(typeof(List<MulitPrimaryKeyClass>));
                    serializer.Divide(xmlWriter, list1, list2);
                }
            }

            Console.WriteLine(context.ToString());
        }
    }


    [XPatchLib.PrimaryKey("Name", "Id")]
    public class MulitPrimaryKeyClass
    {
        public override bool Equals(object obj)
        {
            var c = obj as MulitPrimaryKeyClass;
            if (c == null)
                return false;
            return Id.Equals(c.Id)
                   && Name.Equals(c.Name);
        }

        public int Id { get; set; }

        public string Name { get; set; }
    }
}

输出内容如下:

<?xml version="1.0" encoding="utf-16"?>
<List_MulitPrimaryKeyClass>
  <MulitPrimaryKeyClass Action="Remove" Id="3" Name="Name3" />
  <MulitPrimaryKeyClass Action="Remove" Id="4" Name="Name4" />
  <MulitPrimaryKeyClass Action="Add">
    <Id>5</Id>
    <Name>Name5</Name>
  </MulitPrimaryKeyClass>
</List_MulitPrimaryKeyClass>
版本信息

.NET Framework

支持版本:4.5, 4.0, 3.5, 2.0

.NET Standard

支持版本:2.0, 1.3, 1.0
参见