diff --git a/Serenity.Data.Entity/Extensions/RowExtensions.cs b/Serenity.Data.Entity/Extensions/RowExtensions.cs index 01d68934d1..6b68f6fe6a 100644 --- a/Serenity.Data.Entity/Extensions/RowExtensions.cs +++ b/Serenity.Data.Entity/Extensions/RowExtensions.cs @@ -1,37 +1,32 @@ -using Serenity.Data.Mapping; -using System; +using System; using System.Globalization; namespace Serenity.Data { public static class RowExtensions { - /// - /// türevi nesnenin bir kopyasını çıkarır - /// - /// Bu fonksiyon bir extension metodu olduğundan direk olarak row.Clone() şeklinde - /// kullanılabilir. metodu da bir row un kopyasını çıkarır, fakat - /// sonuç Row türündendir, tekrar asıl Row türevine typecast yapmak gerekir. Bu yardımcı - /// fonksiyonla explicit olarak typecast yapmaya gerek kalmaz. - /// - /// Row'dan türemiş herhangi bir Row sınıfı - /// - /// Kopyalanacak Row türevi nesne - /// - /// Fonksiyonun uygulandığı Row türevinin, bir kopyası (sadece alan değerleri) public static TRow Clone(this TRow row) where TRow : Row { return (TRow)(row.CloneRow()); } - public static void ApplyDefaultValues(this Row row) + public static TRow ApplyDefaultValues(this TRow row, bool unassignedOnly = false) + where TRow: Row { + if (row == null) + throw new ArgumentNullException("row"); + foreach (var field in row.GetFields()) { + if (unassignedOnly && row.IsAssigned(field)) + continue; + var value = field.DefaultValue; if (value != null) field.AsObject(row, field.ConvertValue(value, CultureInfo.InvariantCulture)); } + + return row; } public static TRowFields Init(this TRowFields rowFields)