Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Dapper
提交
ea6b1934
D
Dapper
项目概览
int
/
Dapper
11 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dapper
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ea6b1934
编写于
5月 12, 2017
作者:
N
Nick Craver
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Benchmarks: performance and formatting
上级
7e5bd308
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
116 addition
and
54 deletion
+116
-54
Dapper.Tests.Performance/Benchmarks.Belgrade.cs
Dapper.Tests.Performance/Benchmarks.Belgrade.cs
+3
-3
Dapper.Tests.Performance/Benchmarks.Dapper.cs
Dapper.Tests.Performance/Benchmarks.Dapper.cs
+18
-21
Dapper.Tests.Performance/Benchmarks.EntityFramework.cs
Dapper.Tests.Performance/Benchmarks.EntityFramework.cs
+4
-4
Dapper.Tests.Performance/Benchmarks.HandCoded.cs
Dapper.Tests.Performance/Benchmarks.HandCoded.cs
+4
-4
Dapper.Tests.Performance/Benchmarks.Linq2Sql.cs
Dapper.Tests.Performance/Benchmarks.Linq2Sql.cs
+3
-3
Dapper.Tests.Performance/Benchmarks.Massive.cs
Dapper.Tests.Performance/Benchmarks.Massive.cs
+2
-2
Dapper.Tests.Performance/Benchmarks.NHibernate.cs
Dapper.Tests.Performance/Benchmarks.NHibernate.cs
+5
-5
Dapper.Tests.Performance/Benchmarks.PetaPoco.cs
Dapper.Tests.Performance/Benchmarks.PetaPoco.cs
+4
-4
Dapper.Tests.Performance/Benchmarks.ServiceStack.cs
Dapper.Tests.Performance/Benchmarks.ServiceStack.cs
+1
-1
Dapper.Tests.Performance/Benchmarks.Soma.cs
Dapper.Tests.Performance/Benchmarks.Soma.cs
+2
-2
Dapper.Tests.Performance/Benchmarks.Susanoo.cs
Dapper.Tests.Performance/Benchmarks.Susanoo.cs
+4
-4
Dapper.Tests.Performance/Benchmarks.cs
Dapper.Tests.Performance/Benchmarks.cs
+16
-1
Dapper.Tests.Performance/Helpers/ORMColum.cs
Dapper.Tests.Performance/Helpers/ORMColum.cs
+25
-0
Dapper.Tests.Performance/Helpers/ReturnColum.cs
Dapper.Tests.Performance/Helpers/ReturnColum.cs
+25
-0
未找到文件。
Dapper.Tests.Performance/Benchmarks.Belgrade.cs
浏览文件 @
ea6b1934
...
...
@@ -15,12 +15,12 @@ public void Setup()
_mapper
=
new
QueryMapper
(
ConnectionString
);
}
[
Benchmark
(
Description
=
"
Belgrade:
ExecuteReader"
,
OperationsPerInvoke
=
Iterations
)]
public
Task
ExecuteReader
()
[
Benchmark
(
Description
=
"ExecuteReader"
,
OperationsPerInvoke
=
Iterations
)]
public
async
Task
ExecuteReader
()
{
Step
();
// TODO: How do you get a Post out of this thing?
return
_mapper
.
ExecuteReader
(
"SELECT TOP 1 * FROM Posts WHERE Id = "
+
i
,
await
_mapper
.
ExecuteReader
(
"SELECT TOP 1 * FROM Posts WHERE Id = "
+
i
,
reader
=>
{
var
post
=
new
Post
();
...
...
Dapper.Tests.Performance/Benchmarks.Dapper.cs
浏览文件 @
ea6b1934
...
...
@@ -12,50 +12,47 @@ public void Setup()
BaseSetup
();
}
[
Benchmark
(
Description
=
"
Dapper:
Query<T> (buffered)"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Query<T> (buffered)"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
QueryBuffered
()
{
Step
();
return
_connection
.
Query
<
Post
>(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
true
).
First
();
}
[
Benchmark
(
Description
=
"Dapper: Query<T> (unbuffered)"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
QueryUnbuffered
()
[
Benchmark
(
Description
=
"Query<dyanmic> (buffered)"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
QueryBufferedDynamic
()
{
Step
();
return
_connection
.
Query
<
Post
>(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
fals
e
).
First
();
return
_connection
.
Query
(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
tru
e
).
First
();
}
[
Benchmark
(
Description
=
"
Dapper: QueryFirstOrDefault<T>
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Query
FirstOrDefault
()
[
Benchmark
(
Description
=
"
Query<T> (unbuffered)
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Query
Unbuffered
()
{
Step
();
return
_connection
.
Query
FirstOrDefault
<
Post
>(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
}
);
return
_connection
.
Query
<
Post
>(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
false
).
First
(
);
}
[
Benchmark
(
Description
=
"Dapper: Query<dyanmic> (buffered)"
,
OperationsPerInvoke
=
Iterations
)]
public
object
QueryBufferedDynamic
()
[
Benchmark
(
Description
=
"Query<dyanmic> (unbuffered)"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
QueryUnbufferedDynamic
()
{
Step
();
return
_connection
.
Query
(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
tru
e
).
First
();
return
_connection
.
Query
(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
fals
e
).
First
();
}
[
Benchmark
(
Description
=
"
Dapper: Query<dyanmic> (unbuffered)
"
,
OperationsPerInvoke
=
Iterations
)]
public
object
QueryUnbufferedDynamic
()
[
Benchmark
(
Description
=
"
QueryFirstOrDefault<T>
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
QueryFirstOrDefault
()
{
Step
();
return
_connection
.
Query
(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
},
buffered
:
false
).
First
(
);
return
_connection
.
Query
FirstOrDefault
<
Post
>(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
}
);
}
[
Benchmark
(
Description
=
"Dapper: QueryFirstOrDefault<dyanmic>"
,
OperationsPerInvoke
=
Iterations
)]
public
object
QueryFirstOrDefaultDynamic
()
[
Benchmark
(
Description
=
"QueryFirstOrDefault<dyanmic>"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
QueryFirstOrDefaultDynamic
()
{
Step
();
return
_connection
.
QueryFirstOrDefault
(
"select * from Posts where Id = @Id"
,
new
{
Id
=
i
}).
First
();
}
[
Benchmark
(
Description
=
"
Dapper:
Contrib Get<T>"
,
OperationsPerInvoke
=
Iterations
)]
public
objec
t
ContribGet
()
[
Benchmark
(
Description
=
"Contrib Get<T>"
,
OperationsPerInvoke
=
Iterations
)]
public
Pos
t
ContribGet
()
{
Step
();
return
_connection
.
Get
<
Post
>(
i
);
...
...
Dapper.Tests.Performance/Benchmarks.EntityFramework.cs
浏览文件 @
ea6b1934
...
...
@@ -6,7 +6,7 @@
namespace
Dapper.Tests.Performance
{
public
class
E
ntityFramework
Benchmarks
:
BenchmarkBase
public
class
E
F6
Benchmarks
:
BenchmarkBase
{
private
EntityFramework
.
EFContext
Context
;
private
static
readonly
Func
<
DataClassesDataContext
,
int
,
Linq2Sql
.
Post
>
compiledQuery
=
...
...
@@ -19,21 +19,21 @@ public void Setup()
Context
=
new
EntityFramework
.
EFContext
(
_connection
);
}
[
Benchmark
(
Description
=
"
EF6:
Normal"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Normal"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Normal
()
{
Step
();
return
Context
.
Posts
.
First
(
p
=>
p
.
Id
==
i
);
}
[
Benchmark
(
Description
=
"
EF6:
SqlQuery"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"SqlQuery"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
SqlQuery
()
{
Step
();
return
Context
.
Database
.
SqlQuery
<
Post
>(
"select * from Posts where Id = {0}"
,
i
).
First
();
}
[
Benchmark
(
Description
=
"
EF6:
No Tracking"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"No Tracking"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
NoTracking
()
{
Step
();
...
...
Dapper.Tests.Performance/Benchmarks.HandCoded.cs
浏览文件 @
ea6b1934
...
...
@@ -47,8 +47,8 @@ public void Setup()
#endif
}
[
Benchmark
(
Description
=
"
HandCoded: SqlCommand"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
SqlCommand
()
[
Benchmark
(
Description
=
"
SqlCommand"
,
OperationsPerInvoke
=
Iterations
,
Baseline
=
true
)]
public
Post
SqlCommand
()
{
Step
();
_idParam
.
Value
=
i
;
...
...
@@ -75,8 +75,8 @@ public dynamic SqlCommand()
}
}
[
Benchmark
(
Description
=
"
HandCoded:
DataTable"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
DataTable
()
[
Benchmark
(
Description
=
"DataTable"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
DataTable
Dynamic
()
{
Step
();
_idParam
.
Value
=
i
;
...
...
Dapper.Tests.Performance/Benchmarks.Linq2Sql.cs
浏览文件 @
ea6b1934
...
...
@@ -19,21 +19,21 @@ public void Setup()
Linq2SqlContext
=
new
DataClassesDataContext
(
_connection
);
}
[
Benchmark
(
Description
=
"
Linq2Sql:
Normal"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Normal"
,
OperationsPerInvoke
=
Iterations
)]
public
Linq2Sql
.
Post
Normal
()
{
Step
();
return
Linq2SqlContext
.
Posts
.
First
(
p
=>
p
.
Id
==
i
);
}
[
Benchmark
(
Description
=
"
Linq2Sql:
Compiled"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Compiled"
,
OperationsPerInvoke
=
Iterations
)]
public
Linq2Sql
.
Post
Compiled
()
{
Step
();
return
compiledQuery
(
Linq2SqlContext
,
i
);
}
[
Benchmark
(
Description
=
"
Linq2Sql:
ExecuteQuery"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"ExecuteQuery"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
ExecuteQuery
()
{
Step
();
...
...
Dapper.Tests.Performance/Benchmarks.Massive.cs
浏览文件 @
ea6b1934
...
...
@@ -15,8 +15,8 @@ public void Setup()
_model
=
new
DynamicModel
(
ConnectionString
);
}
[
Benchmark
(
Description
=
"
Massive:
Query (dynamic)"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
Query
()
[
Benchmark
(
Description
=
"Query (dynamic)"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
Query
Dynamic
()
{
Step
();
return
_model
.
Query
(
"select * from Posts where Id = @0"
,
_connection
,
i
).
First
();
...
...
Dapper.Tests.Performance/Benchmarks.NHibernate.cs
浏览文件 @
ea6b1934
...
...
@@ -24,7 +24,7 @@ public void Setup()
_get
=
NHibernateHelper
.
OpenSession
();
}
[
Benchmark
(
Description
=
"
NHibernate:
SQL"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"SQL"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
SQL
()
{
Step
();
...
...
@@ -34,7 +34,7 @@ public Post SQL()
.
List
<
Post
>()[
0
];
}
[
Benchmark
(
Description
=
"
NHibernate:
HQL"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"HQL"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
HQL
()
{
Step
();
...
...
@@ -43,7 +43,7 @@ public Post HQL()
.
List
<
Post
>()[
0
];
}
[
Benchmark
(
Description
=
"
NHibernate:
Criteria"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Criteria"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Criteria
()
{
Step
();
...
...
@@ -52,14 +52,14 @@ public Post Criteria()
.
List
<
Post
>()[
0
];
}
[
Benchmark
(
Description
=
"
NHibernate:
LINQ"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"LINQ"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
LINQ
()
{
Step
();
return
_linq
.
Query
<
Post
>().
First
(
p
=>
p
.
Id
==
i
);
}
[
Benchmark
(
Description
=
"
NHibernate:
Get<T>"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Get<T>"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Get
()
{
Step
();
...
...
Dapper.Tests.Performance/Benchmarks.PetaPoco.cs
浏览文件 @
ea6b1934
...
...
@@ -21,15 +21,15 @@ public void Setup()
_dbFast
.
ForceDateTimesToUtc
=
false
;
}
[
Benchmark
(
Description
=
"
PetaPoco: Fetch<Post
>"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
Fetch
()
[
Benchmark
(
Description
=
"
Fetch<T
>"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Fetch
()
{
Step
();
return
_db
.
Fetch
<
Post
>(
"SELECT * from Posts where Id=@0"
,
i
).
First
();
}
[
Benchmark
(
Description
=
"
PetaPoco: Fetch<Post> (Fast)
"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
FetchFast
()
[
Benchmark
(
Description
=
"
(Fast) Fetch<T>
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
FetchFast
()
{
Step
();
return
_dbFast
.
Fetch
<
Post
>(
"SELECT * from Posts where Id=@0"
,
i
).
First
();
...
...
Dapper.Tests.Performance/Benchmarks.ServiceStack.cs
浏览文件 @
ea6b1934
...
...
@@ -16,7 +16,7 @@ public void Setup()
_db
=
dbFactory
.
Open
();
}
[
Benchmark
(
Description
=
"S
erviceStack.OrmLite: SingleById
"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"S
ingleById<T>
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
Query
()
{
Step
();
...
...
Dapper.Tests.Performance/Benchmarks.Soma.cs
浏览文件 @
ea6b1934
...
...
@@ -13,8 +13,8 @@ public void Setup()
_sdb
=
Simple
.
Data
.
Database
.
OpenConnection
(
ConnectionString
);
}
[
Benchmark
(
Description
=
"
Soma: FindById
"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
Query
()
[
Benchmark
(
Description
=
"
FindById (dynamic)
"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
Query
Dynamic
()
{
Step
();
return
_sdb
.
Posts
.
FindById
(
i
).
FirstOrDefault
();
...
...
Dapper.Tests.Performance/Benchmarks.Susanoo.cs
浏览文件 @
ea6b1934
...
...
@@ -25,7 +25,7 @@ public void Setup()
_db
=
new
DatabaseManager
(
_connection
);
}
[
Benchmark
(
Description
=
"
Susanoo: Mapping Cache
"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"
Mapping Cache<T>
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
MappingCache
()
{
Step
();
...
...
@@ -35,7 +35,7 @@ public Post MappingCache()
.
Execute
(
_db
,
new
{
Id
=
i
}).
First
();
}
[
Benchmark
(
Description
=
"
Susanoo:
Mapping Cache (dynamic)"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Mapping Cache (dynamic)"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
MappingCacheDynamic
()
{
Step
();
...
...
@@ -45,14 +45,14 @@ public dynamic MappingCacheDynamic()
.
Execute
(
_db
,
new
{
Id
=
i
}).
First
();
}
[
Benchmark
(
Description
=
"
Susanoo: Mapping Static
"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"
Mapping Static<T>
"
,
OperationsPerInvoke
=
Iterations
)]
public
Post
MappingStatic
()
{
Step
();
return
_cmd
.
Execute
(
_db
,
new
{
Id
=
i
}).
First
();
}
[
Benchmark
(
Description
=
"
Susanoo:
Mapping Static (dynamic)"
,
OperationsPerInvoke
=
Iterations
)]
[
Benchmark
(
Description
=
"Mapping Static (dynamic)"
,
OperationsPerInvoke
=
Iterations
)]
public
dynamic
MappingStaticDynamic
()
{
Step
();
...
...
Dapper.Tests.Performance/Benchmarks.cs
浏览文件 @
ea6b1934
using
BenchmarkDotNet.Attributes
;
using
BenchmarkDotNet.Attributes.Columns
;
using
BenchmarkDotNet.Columns
;
using
BenchmarkDotNet.Configs
;
using
BenchmarkDotNet.Diagnosers
;
using
BenchmarkDotNet.Horology
;
using
BenchmarkDotNet.Jobs
;
using
BenchmarkDotNet.Order
;
using
Dapper.Tests.Performance.Helpers
;
using
System
;
using
System.Configuration
;
using
System.Data.SqlClient
;
namespace
Dapper.Tests.Performance
{
[
OrderProvider
(
SummaryOrderPolicy
.
FastestToSlowest
)]
[
RankColumn
]
[
Config
(
typeof
(
Config
))]
public
abstract
class
BenchmarkBase
{
...
...
@@ -14,7 +22,6 @@ public abstract class BenchmarkBase
protected
static
readonly
Random
_rand
=
new
Random
();
protected
SqlConnection
_connection
;
public
static
string
ConnectionString
{
get
;
}
=
ConfigurationManager
.
ConnectionStrings
[
"Main"
].
ConnectionString
;
protected
int
i
;
protected
void
BaseSetup
()
...
...
@@ -36,6 +43,14 @@ public class Config : ManualConfig
public
Config
()
{
Add
(
new
MemoryDiagnoser
());
Add
(
new
ORMColum
());
Add
(
new
ReturnColum
());
Add
(
Job
.
Default
.
WithLaunchCount
(
1
)
.
WithIterationTime
(
new
TimeInterval
(
500
,
TimeUnit
.
Millisecond
))
.
WithWarmupCount
(
3
)
.
WithTargetCount
(
3
)
);
}
}
}
\ No newline at end of file
Dapper.Tests.Performance/Helpers/ORMColum.cs
0 → 100644
浏览文件 @
ea6b1934
using
BenchmarkDotNet.Columns
;
using
BenchmarkDotNet.Reports
;
using
BenchmarkDotNet.Running
;
namespace
Dapper.Tests.Performance.Helpers
{
public
class
ORMColum
:
IColumn
{
public
string
Id
=>
nameof
(
ORMColum
);
public
string
ColumnName
{
get
;
}
=
"ORM"
;
public
string
Legend
=>
"The object/relational mapper being tested"
;
public
bool
IsDefault
(
Summary
summary
,
Benchmark
benchmark
)
=>
false
;
public
string
GetValue
(
Summary
summary
,
Benchmark
benchmark
)
=>
benchmark
.
Target
.
Method
.
DeclaringType
.
Name
.
Replace
(
"Benchmarks"
,
string
.
Empty
);
public
string
GetValue
(
Summary
summary
,
Benchmark
benchmark
,
ISummaryStyle
style
)
=>
benchmark
.
Target
.
Method
.
DeclaringType
.
Name
.
Replace
(
"Benchmarks"
,
string
.
Empty
);
public
bool
IsAvailable
(
Summary
summary
)
=>
true
;
public
bool
AlwaysShow
=>
true
;
public
ColumnCategory
Category
=>
ColumnCategory
.
Job
;
public
int
PriorityInCategory
=>
-
10
;
public
bool
IsNumeric
=>
false
;
public
UnitType
UnitType
=>
UnitType
.
Dimensionless
;
public
override
string
ToString
()
=>
ColumnName
;
}
}
Dapper.Tests.Performance/Helpers/ReturnColum.cs
0 → 100644
浏览文件 @
ea6b1934
using
BenchmarkDotNet.Columns
;
using
BenchmarkDotNet.Reports
;
using
BenchmarkDotNet.Running
;
namespace
Dapper.Tests.Performance.Helpers
{
public
class
ReturnColum
:
IColumn
{
public
string
Id
=>
nameof
(
ReturnColum
);
public
string
ColumnName
{
get
;
}
=
"Return"
;
public
string
Legend
=>
"The return type of the method"
;
public
bool
IsDefault
(
Summary
summary
,
Benchmark
benchmark
)
=>
false
;
public
string
GetValue
(
Summary
summary
,
Benchmark
benchmark
)
=>
benchmark
.
Target
.
Method
.
ReturnType
.
Name
;
public
string
GetValue
(
Summary
summary
,
Benchmark
benchmark
,
ISummaryStyle
style
)
=>
benchmark
.
Target
.
Method
.
ReturnType
.
Name
;
public
bool
IsAvailable
(
Summary
summary
)
=>
true
;
public
bool
AlwaysShow
=>
true
;
public
ColumnCategory
Category
=>
ColumnCategory
.
Job
;
public
int
PriorityInCategory
=>
1
;
public
bool
IsNumeric
=>
false
;
public
UnitType
UnitType
=>
UnitType
.
Dimensionless
;
public
override
string
ToString
()
=>
ColumnName
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录