You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.9 KiB

1 year ago
using System;
using System.ComponentModel.DataAnnotations;
namespace CK.SCP.Models.Attributes
{
/// <summary>
/// 列来源属于
/// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class ColumnSource : Attribute
{
/// <summary>
/// </summary>
/// <param name="sourceType">列来源。ENUM:枚举数据源.TABLE表数据源(外键关系)</param>
/// <param name="typeName">来源数据源类型</param>
/// <param name="columnNames">
/// sourceType为TABLE时,columName是对应表中的列名
/// columnNames[0]: ValueMember ,colums[1]:DisplayMember
public ColumnSource(ColumnSourceType sourceType, Type typeName, string[] columnNames = null,
string selector = null)
{
SourceType = sourceType;
TypeName = typeName;
ColumnNames = columnNames;
Selector = selector;
}
public ColumnSourceType SourceType { get; }
/// <summary>获取或设置属性映射到的列的从零开始的顺序。</summary>
/// <returns>列的顺序。</returns>
public Type TypeName { get; }
/// <summary>获取或设置该属性映射到的列的数据库提供程序特定的数据类型。</summary>
/// <returns>属性将映射到的列的数据库提供程序特定数据类型。</returns>
[StringLength(50)]
public string[] ColumnNames { get; }
[StringLength(50)]
public string Selector { get; set; }
}
public enum ColumnSourceType
{
/// <summary>
/// 枚举数据源
/// </summary>
ENUM = 1,
/// <summary>
/// 表数据源
/// </summary>
TABLE = 2,
/// <summary>
/// bool类型
/// </summary>
Boolean = 4
}
}