Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 7e952c7

Browse files
committed
Discard Ignored properties for first field PK consideration
1 parent 7c0f5e7 commit 7e952c7

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/ServiceStack.OrmLite/OrmLiteConfigExtensions.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,8 @@ internal static ModelDefinition GetModelDefinition(this Type modelType)
9191
var customSelectAttr = propertyInfo.FirstAttribute<CustomSelectAttribute>();
9292
var decimalAttribute = propertyInfo.FirstAttribute<DecimalLengthAttribute>();
9393
var belongToAttribute = propertyInfo.FirstAttribute<BelongToAttribute>();
94-
var isFirst = i++ == 0;
95-
96-
var isAutoId = propertyInfo.HasAttribute<AutoIdAttribute>();
97-
98-
var isPrimaryKey = (!hasPkAttr && (propertyInfo.Name == OrmLiteConfig.IdField || (!hasIdField && isFirst)))
99-
|| propertyInfo.HasAttributeNamed(typeof(PrimaryKeyAttribute).Name)
100-
|| isAutoId;
101-
94+
var referenceAttr = propertyInfo.FirstAttribute<ReferenceAttribute>();
95+
10296
var isRowVersion = propertyInfo.Name == ModelDefinition.RowVersionName
10397
&& (propertyInfo.PropertyType == typeof(ulong) || propertyInfo.PropertyType == typeof(byte[]));
10498

@@ -116,6 +110,18 @@ internal static ModelDefinition GetModelDefinition(this Type modelType)
116110
if (propertyType.IsEnumFlags() || propertyType.HasAttribute<EnumAsIntAttribute>())
117111
treatAsType = Enum.GetUnderlyingType(propertyType);
118112

113+
var isReference = referenceAttr != null && propertyType.IsClass;
114+
var isIgnored = propertyInfo.HasAttribute<IgnoreAttribute>() || isReference;
115+
116+
var isFirst = !isIgnored && i++ == 0;
117+
118+
var isAutoId = propertyInfo.HasAttribute<AutoIdAttribute>();
119+
120+
var isPrimaryKey = (!hasPkAttr && (propertyInfo.Name == OrmLiteConfig.IdField || (!hasIdField && isFirst)))
121+
|| propertyInfo.HasAttributeNamed(typeof(PrimaryKeyAttribute).Name)
122+
|| isAutoId;
123+
124+
119125
var aliasAttr = propertyInfo.FirstAttribute<AliasAttribute>();
120126

121127
var indexAttr = propertyInfo.FirstAttribute<IndexAttribute>();
@@ -127,7 +133,6 @@ internal static ModelDefinition GetModelDefinition(this Type modelType)
127133
var defaultValueAttr = propertyInfo.FirstAttribute<DefaultAttribute>();
128134

129135
var referencesAttr = propertyInfo.FirstAttribute<ReferencesAttribute>();
130-
var referenceAttr = propertyInfo.FirstAttribute<ReferenceAttribute>();
131136
var fkAttr = propertyInfo.FirstAttribute<ForeignKeyAttribute>();
132137
var customFieldAttr = propertyInfo.FirstAttribute<CustomFieldAttribute>();
133138
var chkConstraintAttr = propertyInfo.FirstAttribute<CheckConstraintAttribute>();
@@ -162,7 +167,7 @@ internal static ModelDefinition GetModelDefinition(this Type modelType)
162167
ForeignKey = fkAttr == null
163168
? referencesAttr != null ? new ForeignKeyConstraint(referencesAttr.Type) : null
164169
: new ForeignKeyConstraint(fkAttr.Type, fkAttr.OnDelete, fkAttr.OnUpdate, fkAttr.ForeignKeyName),
165-
IsReference = referenceAttr != null && propertyType.IsClass,
170+
IsReference = isReference,
166171
GetValueFn = propertyInfo.CreateGetter(),
167172
SetValueFn = propertyInfo.CreateSetter(),
168173
Sequence = sequenceAttr?.Name,
@@ -175,8 +180,6 @@ internal static ModelDefinition GetModelDefinition(this Type modelType)
175180
IsRefType = propertyType.IsRefType(),
176181
};
177182

178-
var isIgnored = propertyInfo.HasAttribute<IgnoreAttribute>()
179-
|| fieldDefinition.IsReference;
180183
if (isIgnored)
181184
modelDef.IgnoredFieldDefinitions.Add(fieldDefinition);
182185
else

0 commit comments

Comments
 (0)