Dreamine.Database.Core
1.0.1
Dreamine.Database.Core 데이터베이스 기능과 관련 API를 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
DatabaseEntityMap.cs
이 파일의 문서화 페이지로 가기
1
using
System.Reflection;
2
using
System.Collections.Concurrent;
3
using
Dreamine.Database.Abstractions.Mapping;
4
5
namespace
Dreamine.Database.Core.Mapping
;
6
15
public
sealed
class
DatabaseEntityMap
16
{
25
private
static
readonly ConcurrentDictionary<Type, DatabaseEntityMap>
Cache
=
new
();
26
59
private
DatabaseEntityMap
(Type entityType,
string
tableName, IReadOnlyList<DatabasePropertyMap> properties)
60
{
61
EntityType
= entityType;
62
TableName
= tableName;
63
Properties
= properties;
64
Key
= properties.FirstOrDefault(x => x.IsKey);
65
InsertableProperties
= properties.Where(x => !x.IsGenerated).ToArray();
66
UpdatableProperties
= properties.Where(x => !x.IsGenerated && !x.IsKey).ToArray();
67
}
68
77
public
Type
EntityType
{
get
; }
78
87
public
string
TableName
{
get
; }
88
97
public
IReadOnlyList<DatabasePropertyMap>
Properties
{
get
; }
98
107
public
DatabasePropertyMap
?
Key
{
get
; }
108
117
public
IReadOnlyList<DatabasePropertyMap>
InsertableProperties
{
get
; }
118
127
public
IReadOnlyList<DatabasePropertyMap>
UpdatableProperties
{
get
; }
128
153
public
static
DatabaseEntityMap
Create<T>
()
154
{
155
return
Create
(typeof(T));
156
}
157
190
public
static
DatabaseEntityMap
Create
(Type entityType)
191
{
192
ArgumentNullException.ThrowIfNull(entityType);
193
return
Cache
.GetOrAdd(entityType,
CreateUncached
);
194
}
195
220
private
static
DatabaseEntityMap
CreateUncached
(Type entityType)
221
{
222
var tableName = entityType.GetCustomAttribute<DatabaseTableAttribute>()?.Name ?? entityType.Name;
223
var properties = entityType
224
.GetProperties(BindingFlags.Instance | BindingFlags.Public)
225
.Where(x => x.CanRead)
226
.Where(x => x.GetCustomAttribute<DatabaseIgnoreAttribute>() is
null
)
227
.Select(
DatabasePropertyMap
.
Create
)
228
.ToArray();
229
230
return
new
DatabaseEntityMap
(entityType, tableName, properties);
231
}
232
}
Dreamine.Database.Core.Mapping
Definition
DatabaseEntityMap.cs:5
Dreamine.Database.Core.Mapping.DatabaseEntityMap.CreateUncached
static DatabaseEntityMap CreateUncached(Type entityType)
Definition
DatabaseEntityMap.cs:220
Dreamine.Database.Core.Mapping.DatabaseEntityMap.Key
DatabasePropertyMap? Key
Definition
DatabaseEntityMap.cs:107
Dreamine.Database.Core.Mapping.DatabaseEntityMap.UpdatableProperties
IReadOnlyList< DatabasePropertyMap > UpdatableProperties
Definition
DatabaseEntityMap.cs:127
Dreamine.Database.Core.Mapping.DatabaseEntityMap.DatabaseEntityMap
DatabaseEntityMap(Type entityType, string tableName, IReadOnlyList< DatabasePropertyMap > properties)
Definition
DatabaseEntityMap.cs:59
Dreamine.Database.Core.Mapping.DatabaseEntityMap.EntityType
Type EntityType
Definition
DatabaseEntityMap.cs:77
Dreamine.Database.Core.Mapping.DatabaseEntityMap.Create
static DatabaseEntityMap Create(Type entityType)
Definition
DatabaseEntityMap.cs:190
Dreamine.Database.Core.Mapping.DatabaseEntityMap.InsertableProperties
IReadOnlyList< DatabasePropertyMap > InsertableProperties
Definition
DatabaseEntityMap.cs:117
Dreamine.Database.Core.Mapping.DatabaseEntityMap.Cache
static readonly ConcurrentDictionary< Type, DatabaseEntityMap > Cache
Definition
DatabaseEntityMap.cs:25
Dreamine.Database.Core.Mapping.DatabaseEntityMap.TableName
string TableName
Definition
DatabaseEntityMap.cs:87
Dreamine.Database.Core.Mapping.DatabaseEntityMap.Properties
IReadOnlyList< DatabasePropertyMap > Properties
Definition
DatabaseEntityMap.cs:97
Dreamine.Database.Core.Mapping.DatabaseEntityMap.Create< T >
static DatabaseEntityMap Create< T >()
Definition
DatabaseEntityMap.cs:153
Dreamine.Database.Core.Mapping.DatabasePropertyMap
Definition
DatabasePropertyMap.cs:15
Dreamine.Database.Core.Mapping.DatabasePropertyMap.Create
static DatabasePropertyMap Create(PropertyInfo property)
Definition
DatabasePropertyMap.cs:146
Mapping
DatabaseEntityMap.cs
다음에 의해 생성됨 :
1.17.0