Skip to content

Commit 77b9b7b

Browse files
committed
Remove usage of DeepClone
DeepClone uses BinaryFormatter which is obsolete in .NET 5.0 and throws a PlatformNotSupportedException. The fix insures that columns are cloned instead of cloning the whole object Fixes #479 +semver: fix
1 parent f3cd57c commit 77b9b7b

File tree

8 files changed

+9
-10
lines changed

8 files changed

+9
-10
lines changed

src/FluentNHibernate/Mapping/ComponentMap.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,7 @@ protected override ComponentMapping CreateComponentMappingRoot(AttributeStore st
5959

6060
ExternalComponentMapping IExternalComponentMappingProvider.GetComponentMapping()
6161
{
62-
var mapping = (ExternalComponentMapping)CreateComponentMapping();
63-
64-
return mapping.DeepClone();
62+
return (ExternalComponentMapping) CreateComponentMapping();
6563
}
6664

6765
Type IExternalComponentMappingProvider.Type

src/FluentNHibernate/Mapping/ElementPart.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ ElementMapping IElementMappingProvider.GetElementMapping()
101101
foreach (var column in Columns)
102102
{
103103
column.MergeAttributes(columnAttributes);
104-
mapping.AddColumn(Layer.Defaults, column);
104+
mapping.AddColumn(Layer.Defaults, column.Clone());
105105
}
106106

107107
return mapping;

src/FluentNHibernate/Mapping/JoinedSubClassPart.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ SubclassMapping ISubclassMappingProvider.GetSubclassMapping()
143143
mapping.Set(x => x.Type, Layer.Defaults, typeof(TSubclass));
144144

145145
foreach (var column in columns)
146-
mapping.Key.AddColumn(Layer.Defaults, column);
146+
mapping.Key.AddColumn(Layer.Defaults, column.Clone());
147147

148148
foreach (var property in providers.Properties)
149149
mapping.AddProperty(property.GetPropertyMapping());

src/FluentNHibernate/Mapping/ManyToManyPart.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ protected override CollectionMapping GetCollectionMapping()
370370
collection.Key.AddColumn(Layer.Defaults, new ColumnMapping(EntityType.Name + "_id"));
371371

372372
foreach (var column in parentKeyColumns)
373-
collection.Key.AddColumn(Layer.UserSupplied, column);
373+
collection.Key.AddColumn(Layer.UserSupplied, column.Clone());
374374

375375
if (collection.Relationship != null)
376376
{
@@ -379,7 +379,7 @@ protected override CollectionMapping GetCollectionMapping()
379379
((ManyToManyMapping)collection.Relationship).AddColumn(Layer.Defaults, new ColumnMapping(typeof(TChild).Name + "_id"));
380380

381381
foreach (var column in childKeyColumns)
382-
((ManyToManyMapping)collection.Relationship).AddColumn(Layer.UserSupplied, column);
382+
((ManyToManyMapping)collection.Relationship).AddColumn(Layer.UserSupplied, column.Clone());
383383
}
384384

385385
// HACK: Index only on list and map - shouldn't have to do this!

src/FluentNHibernate/Mapping/OneToManyPart.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ protected override CollectionMapping GetCollectionMapping()
198198

199199
foreach (var column in keyColumns)
200200
{
201-
collection.Key.AddColumn(Layer.UserSupplied, column);
201+
collection.Key.AddColumn(Layer.UserSupplied, column.Clone());
202202
}
203203

204204
// HACK: shouldn't have to do this!

src/FluentNHibernate/Mapping/PropertyPart.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ PropertyMapping IPropertyMappingProvider.GetPropertyMapping()
332332
}
333333

334334
foreach (var column in columns)
335-
mapping.AddColumn(Layer.UserSupplied, column);
335+
mapping.AddColumn(Layer.UserSupplied, column.Clone());
336336

337337
foreach (var column in mapping.Columns)
338338
{

src/FluentNHibernate/Mapping/SubclassMap.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ SubclassMapping IIndeterminateSubclassMappingProvider.GetSubclassMapping(Subclas
345345
}
346346
}
347347

348-
return mapping.DeepClone();
348+
return mapping;
349349
}
350350

351351
Type IIndeterminateSubclassMappingProvider.EntityType

src/FluentNHibernate/Utils/Extensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public static bool HasInterface(this Type type, Type interfaceType)
6666
return type.GetInterfaces().Contains(interfaceType);
6767
}
6868

69+
[Obsolete("Please do not use this method. It will be removed in a future version.")]
6970
public static T DeepClone<T>(this T obj)
7071
{
7172
using (var stream = new MemoryStream())

0 commit comments

Comments
 (0)