Skip to content

Commit f1ad422

Browse files
committed
[ksqlDB.RestApi.Client]: fixed creation of multiple FieldMetadata for primitive field in Base class #102
1 parent 43feca4 commit f1ad422

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

ksqlDb.RestApi.Client/FluentAPI/Builders/EntityTypeBuilder.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,14 @@ public IFieldTypeBuilder<TProperty> Property<TProperty>(Expression<Func<TEntity,
5757
string path = string.Empty;
5858
foreach (var (memberName, memberInfo) in members)
5959
{
60+
var memberInfoKey = new MemberInfoKey
61+
{
62+
Module = memberInfo.Module,
63+
MetadataToken = memberInfo.MetadataToken
64+
};
6065
path += memberName;
6166

62-
if (!Metadata.FieldsMetadataDict.TryGetValue(memberInfo, out var fieldMetadata))
67+
if (!Metadata.FieldsMetadataDict.TryGetValue(memberInfoKey, out var fieldMetadata))
6368
{
6469
fieldMetadata = new FieldMetadata()
6570
{
@@ -86,7 +91,7 @@ public IFieldTypeBuilder<TProperty> Property<TProperty>(Expression<Func<TEntity,
8691
break;
8792
}
8893

89-
Metadata.FieldsMetadataDict[memberInfo] = fieldMetadata;
94+
Metadata.FieldsMetadataDict[memberInfoKey] = fieldMetadata;
9095
path += ".";
9196
}
9297

@@ -122,6 +127,12 @@ internal void IgnoreRowTime()
122127

123128
private void AddFieldMetadata(MemberInfo memberInfo, bool ignoreInDDL)
124129
{
130+
var memberInfoKey = new MemberInfoKey
131+
{
132+
Module = memberInfo.Module,
133+
MetadataToken = memberInfo.MetadataToken
134+
};
135+
125136
var fieldMetadata = new FieldMetadata
126137
{
127138
MemberInfo = memberInfo,
@@ -130,7 +141,7 @@ private void AddFieldMetadata(MemberInfo memberInfo, bool ignoreInDDL)
130141
IgnoreInDDL = ignoreInDDL
131142
};
132143

133-
Metadata.FieldsMetadataDict[memberInfo] = fieldMetadata;
144+
Metadata.FieldsMetadataDict[memberInfoKey] = fieldMetadata;
134145
}
135146
}
136147
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System.Reflection;
2+
3+
namespace ksqlDb.RestApi.Client.FluentAPI.Builders
4+
{
5+
internal record MemberInfoKey
6+
{
7+
internal Module Module { get; set; }
8+
internal int MetadataToken { get; set; }
9+
}
10+
}

ksqlDb.RestApi.Client/Metadata/EntityMetadata.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Linq.Expressions;
22
using System.Reflection;
3+
using ksqlDb.RestApi.Client.FluentAPI.Builders;
34

45
namespace ksqlDb.RestApi.Client.Metadata
56
{
@@ -9,7 +10,7 @@ internal sealed class EntityMetadata
910

1011
internal MemberInfo? PrimaryKeyMemberInfo { get; set; }
1112

12-
internal readonly IDictionary<MemberInfo, FieldMetadata> FieldsMetadataDict = new Dictionary<MemberInfo, FieldMetadata>();
13+
internal readonly IDictionary<MemberInfoKey, FieldMetadata> FieldsMetadataDict = new Dictionary<MemberInfoKey, FieldMetadata>();
1314

1415
public IEnumerable<FieldMetadata> FieldsMetadata => FieldsMetadataDict.Values;
1516

0 commit comments

Comments
 (0)