using System using JetBrains Annotations using KL DTS Common Models us

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using JetBrains.Annotations;
using KL.DTS.Common.Models;
using KL.DTS.Common.Models.DataService;
using KL.DTS.Services.Common.Services;
namespace KL.DTS.Services.DataAccess.Services
{
/// <summary>
/// Представляет методы конвертации модели в сущности базы данных и обратно.
/// </summary>
internal interface IEntityConverter
{
/// <summary>
/// Получить функцию для конвертации из DTO в EF.
/// </summary>
[NotNull]
Func<EntityBase, TransformerOptions, IDbEntity> FromDtoConverter();
/// <summary>
/// Получить функцию для конвертации из EF модели в DTO.
/// </summary>
[NotNull]
Func<IDbEntity, TransformerOptions, EntityBase> ToDtoConverter();
/// <summary>
/// Получить Action прописывающий детали в EF сущность.
/// </summary>
[NotNull]
Action<IDbEntity> GetDetailsProvider();
/// <summary>
/// Получить Action прописывающий детали в EF сущность.
/// </summary>
[NotNull]
Action<IDbEntity> GetDetailsProvider([NotNull] IDbEntityResolver resolver);
}
/// <summary>
/// Представляет методы конвертации модели в сущности базы данных и обратно.
/// </summary>
/// <typeparam name="TModel">Тип модели</typeparam>
internal interface IEntityConverter<TModel> : IEntityConverter
{
/// <summary>
/// Получить функцию для конвертации из DTO в EF.
/// </summary>
[NotNull]
new Func<TModel, TransformerOptions, IDbEntity> FromDtoConverter();
/// <summary>
/// Получить функцию для конвертации из EF модели в DTO.
/// </summary>
[NotNull]
new Func<IDbEntity, TransformerOptions, TModel> ToDtoConverter();
}
/// <summary>
/// Представляет методы конвертации модели в сущности базы данных и обратно.
/// </summary>
/// <typeparam name="TModel">Тип модели</typeparam>
/// <typeparam name="TDbEntity">Тип сущности базы данных.</typeparam>
internal interface IEntityConverter<TModel, TDbEntity> : IEntityConverter<TModel>
{
}
}