Skip to content

Commit 8a994ea

Browse files
committed
Fix HiLo across multiple databases
Fixes #1394 (cherry picked from commit cd182ec)
1 parent 0c9b28e commit 8a994ea

File tree

2 files changed

+444
-5
lines changed

2 files changed

+444
-5
lines changed

src/EFCore.PG/ValueGeneration/Internal/NpgsqlValueGeneratorCache.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using Microsoft.EntityFrameworkCore.Metadata;
66
using Microsoft.EntityFrameworkCore.Storage;
77
using Microsoft.EntityFrameworkCore.ValueGeneration;
8-
using Npgsql.EntityFrameworkCore.PostgreSQL.Utilities;
98

109
namespace Npgsql.EntityFrameworkCore.PostgreSQL.ValueGeneration.Internal
1110
{
@@ -35,17 +34,24 @@ public virtual NpgsqlSequenceValueGeneratorState GetOrAddSequenceState(
3534
IProperty property,
3635
IRelationalConnection connection)
3736
{
38-
//var sequence = property.GetNpgsql().FindHiLoSequence();
3937
var sequence = property.FindHiLoSequence();
4038

4139
Debug.Assert(sequence != null);
4240

4341
return _sequenceGeneratorCache.GetOrAdd(
44-
GetSequenceName(sequence),
42+
GetSequenceName(sequence, connection),
4543
sequenceName => new NpgsqlSequenceValueGeneratorState(sequence));
4644
}
4745

48-
static string GetSequenceName(ISequence sequence)
49-
=> (sequence.Schema == null ? "" : sequence.Schema + ".") + sequence.Name;
46+
static string GetSequenceName(ISequence sequence, IRelationalConnection connection)
47+
{
48+
var dbConnection = connection.DbConnection;
49+
50+
return dbConnection.Database.ToUpperInvariant()
51+
+ "::"
52+
+ dbConnection.DataSource?.ToUpperInvariant()
53+
+ "::"
54+
+ (sequence.Schema == null ? "" : sequence.Schema + ".") + sequence.Name;
55+
}
5056
}
5157
}

0 commit comments

Comments
 (0)