-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathPrimaryKeyConvention.cs
More file actions
41 lines (35 loc) · 1.19 KB
/
Copy pathPrimaryKeyConvention.cs
File metadata and controls
41 lines (35 loc) · 1.19 KB
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
using CoreDdd.Domain;
using CoreUtils;
using CoreUtils.Extensions;
using FluentNHibernate.Conventions;
using FluentNHibernate.Conventions.AcceptanceCriteria;
using FluentNHibernate.Conventions.Inspections;
using FluentNHibernate.Conventions.Instances;
namespace CoreDdd.Nhibernate.Conventions;
/// <summary>
/// Primary key default HiLo convention.
/// </summary>
public class PrimaryKeyConvention : IIdConvention, IIdConventionAcceptance
{
private static string? _maxLo;
#pragma warning disable 1591
public static void Initialize(string maxLo)
{
_maxLo = maxLo;
}
public void Accept(IAcceptanceCriteria<IIdentityInspector> criteria)
{
criteria.Expect(x => x.EntityType.IsSubclassOfRawGeneric(typeof (Entity<>)));
}
public void Apply(IIdentityInstance instance)
{
Guard.Hope(_maxLo != null, "PrimaryKeyConvention not initialized. Call PrimaryKeyConvention.Initialize() before using it.");
if (instance.Type == typeof(int)
|| instance.Type == typeof(long))
{
instance.Column("Id");
instance.GeneratedBy.HiLo(_maxLo);
}
}
#pragma warning restore 1591
}