Serenity, saha davranışını kontrol eden bir dizi saha bayrağına sahiptir.
public enum FieldFlags
{
None = 0,
Insertable = 1,
Updatable = 2,
NotNull = 4,
PrimaryKey = 8,
AutoIncrement = 16,
Foreign = 32,
Calculated = 64,
Reflective = 128,
NotMapped = 256,
Trim = 512,
TrimToEmpty = 512 + 1024,
DenyFiltering = 2048,
Unique = 4096,
Default = Insertable | Updatable | Trim,
Required = Default | NotNull,
Identity = PrimaryKey | AutoIncrement | NotNull
}
Sıradan bir tablo alanında, kombinasyon bayrağına karşılık gelen, varsayılan olarak ayarlanmış , Insertableve Updatablebayrakları bulunur .TrimDefault
Eklenebilir Bayrak
Bayrak Insertable, alanın yeni kayıt modunda düzenlenebilir olup olmadığını kontrol eder. Varsayılan olarak tüm sıradan alanların eklenebilir olduğu kabul edilir.
Bazı alanlar veritabanı tablosuna eklenemeyebilir; örneğin kimlik sütunlarında bu işaret ayarlanmamış olmalıdır.
Bir alan bu bayrağa sahip olmadığında, yeni kayıt modundaki formlarda düzenlenemez. Bu aynı zamanda istek işleyici düzeyindeki hizmetlerde de doğrulanır.
Bazen bir SQL INSERT deyiminde tamamen geçerli olan ancak formlarda düzenlenmemesi gereken dahili alanlar olabilir.
InsertedByUserIdBir örnek , son kullanıcı tarafından değil, hizmet düzeyinde ayarlanması gereken bir alan olabilir . Eğer son kullanıcının bunu formlarda düzenlemesine izin verirsek bu bir güvenlik açığı olur. Bu tür alanlarda Insertableda bayrak ayarlanmamalıdır.
Bu aynı zamanda alan bayraklarının veritabanı tablosu ayarlarıyla tam olarak eşleşmesi gerekmediği anlamına gelir; çünkü bunların SQL'de değil uygulama düzeyinde kullanılması amaçlanmıştır.
Eklenebilir Özellik
InsertableBir alanın bayrağını kapatmak için Insertable(false)üzerine bir özellik ekleyin:
[Insertable(false)]
public string MyField
{
get => fields.MyField[this];
set => fields.MyField[this] = value;
}
Insertable(true)Tekrar açmak için öğesini kullanın .
Eklenemeyen alanlar gizli değildir. Bunlar yalnızca salt okunurdur. Bunları gizlemek istiyorsanız, bu HideOnInsertözelliği kullanın veya iletişim kutunuzun yöntemini this.form.MyField.getGridField().toggle(this.isNew())geçersiz kılma gibi bir şey yazın.updateInterface
Güncellenebilir Bayrak
Bu bayrak tıpkı bayrak gibidir Insertableancak formlardaki kayıt düzenleme modunu ve hizmetlerdeki güncelleme işlemlerini kontrol eder. Varsayılan olarak tüm sıradan alanların güncellenebilir olduğu kabul edilir.
Güncellenebilir Özellik
UpdatableBir alanın bayrağını kapatmak için [Updatable(false)]üzerine bir özellik ekleyin:
[Updatable(false)]
public string MyField
{
get => return fields.MyField[this];
set => fields.MyField[this] = value;
}
Updatable(true)Açmak için öğesini kullanın .
Güncellenemeyen alanlar iletişim kutularında gizli değildir. Bunlar yalnızca salt okunurdur. Bunları gizlemek istiyorsanız, bu HideOnUpdateözelliği kullanın veya iletişim kutunuzun yöntemini this.form.MyField.getGridField().toggle(!this.isNew())geçersiz kılma gibi bir şey yazın.updateInterface
Bayrağı Kırp
Bu bayrak yalnızca dize tipi alanlar için anlamlıdır ve kaydetmeden önce değerlerinin kırpılıp kırpılmayacağını kontrol eder. Tüm dize alanlarında bu bayrak varsayılan olarak açıktır.
Bir alan değeri boş bir dize veya yalnızca boşluk olduğunda, boş olacak şekilde kırpılır.
TrimToEmpty Bayrağı
Dize alanlarını null yerine boş bir dizeye kırpmayı tercih ediyorsanız bu bayrağı kullanın.
Bir alan değeri boş veya yalnızca boşluk olduğunda, boş bir dizeye dönüştürülür.
SetFieldFlags Özelliği
Bu özellik, alanlarda bir dizi bayrağı dahil etmek veya hariç tutmak için kullanılabilir. Bayrakları dahil etmek için ilk gerekli parametreyi ve bayrakları hariç tutmak için ikinci bir isteğe bağlı parametreyi alır.
Bir alanda TrimToEmpty bayrağını açmak için onu şu şekilde kullanırız:
[SetFieldFlags(FieldFlags.TrimToEmpty)]
public string MyField
{
get => fields.MyField[this];
set => fields.MyField[this] = value;
}
Trim bayrağını kapatmak için:
[SetFieldFlags(FieldFlags.None, FieldFlags.TrimToEmpty)]
public string MyField
{
get => return fields.MyField[this];
set => fields.MyField[this] = value;
}
TrimToEmpty ve Updatable'ı eklemek ancak Insertable'ı kaldırmak için:
[SetFieldFlags(
FieldFlags.Updatable | FieldFlags.TrimToEmpty,
FieldFlags.Insertable)]
public string MyField
{
get => fields.MyField[this];
set => fields.MyField[this] = value;
}
Insertable ve Updatable öznitelikleri SetFieldFlags özniteliğinin alt sınıflarıdır.
Boş Değil Bayrağı
Alanları geçersiz kılınamaz olarak ayarlamak için bu bayrağı kullanın. Varsayılan olarak bu bayrak, öznitelik kullanılarak veritabanında null değeri olmayan alanlar için ayarlanır NotNull.
Bir alan geçersiz kılınamadığında, formlardaki ilgili etikette kırmızı bir yıldız işareti bulunur ve bunların girilmesi gerekir.
NotNull Özelliği
Bu, bir alandaki NotNull özniteliğini AÇIK olarak ayarlar. Kapatmak için özelliği kaldırın.
[Required(false)]Ayrıca , veritabanında geçersiz kılınmasa bile formlarda gerekli olmayan bir alanı oluşturmak için de kullanabilirsiniz . Bu NotNull bayrağını temizlemez.
Gerekli Bayrak
Bu, Default ve NotNullable bayraklarının birleşimidir.
[Required]Formlardaki doğrulamayı kontrol eden öznitelikle hiçbir ilişkisi yoktur .
PrimaryKey Bayrağı ve PrimaryKey Niteliği
Bunu tablodaki birincil anahtar alanları için ayarlayın.
Birincil anahtar alanları, Listeleme ve Alma istek işleyicilerindeki Anahtar sütunu seçim modunda seçilir.
Öznitelik [PrimaryKey]bu bayrağı AÇIK olarak ayarlar.
Otomatik Arttırma Bayrağı ve Otomatik Arttırma Özniteliği
Kimlik sütunları veya bir oluşturucu kullanan sütunlar gibi sunucu tarafında otomatik olarak artan alanlar için bunu ayarlayın.
Kimlik Bayrağı ve Kimlik Niteliği
Bu, kimlik sütunları için ortak olan PrimaryKey, AutoIncrement ve NotNull bayraklarının bir birleşimidir.
IdPropertyBağlanmak
Bu, bir satır sınıfının ID özelliğini belirler. Otomatik artış özelliği gibi bir kimlik olması gerekmez.
Yabancı Bayrak
Bu bayrak, bir birleştirme yoluyla diğer tablolardan kaynaklanan yabancı görünüm alanları için ayarlanır.
T0 dışında tablo takma adları içeren ifadelere sahip alanlar için otomatik olarak ayarlanır.
Örneğin, eğer bir alan buna benzer bir özniteliğe sahipse [Expression("jCountry.CountryName")]bu bayrağa sahip olacaktır.
Bunun YabancıKey özelliğiyle hiçbir ilişkisi yoktur
Hesaplanmış Bayrak
Bir alanın birden fazla alanı veya bazı matematiksel işlemleri içeren bir ifadesi varsa bu bayrağa sahip olacaktır.
Bu aynı zamanda SQL sunucusu tarafında hesaplanan alanlar için de ayarlanabilir.
Eşlenmemiş Bayrağı ve Eşlenmemiş Özniteliği
Serenity varlıklarındaki eşlenmemiş bir alana karşılık gelir. Veritabanı tablosunda bunlara karşılık gelen bir alan yoktur.
Bu tür alanlar istemci ve hizmet katmanlarında geçici hesaplama, depolama ve aktarım amacıyla kullanılabilir.
Yansıtıcı Bayrak
Bu, satırda kendilerine ait bir depoya sahip olmayan, ancak başka bir alanın değerini farklı bir biçimde yansıtan eşlenmemiş alanların gelişmiş bir biçimi için kullanılır. Örneğin, negatif olabilecek bir tamsayı alanının mutlak (pozitif) değerini görüntüleyen bir alan.
Bu, yalnızca bu tür eşlenmemiş alanlar için nadir durumlarda kullanılmalıdır.
Filtrelemeyi Reddet Bayrağı
Ayarlanırsa hassas bir alandaki filtreleme işlemlerini reddeder. Bu, istemci tarafında seçilmesine veya filtrelenmesine izin verilmemesi gereken, PasswordHash gibi gizli alanlar için yararlı olabilir.
Benzersiz Bayrak ve Benzersiz Nitelik
Bir alan bu bayrağa sahip olduğunda, değeri veritabanındaki mevcut değerlerle karşılaştırılarak benzersiz olup olmadığı kontrol edilir.
Bu bayrağı öznitelikle açabilir Uniqueve bu kısıtlamanın hizmet düzeyinde kontrol edilmesi gerekip gerekmediğini belirleyebilirsiniz (şifreli kısıtlama hatalarını önlemek için veritabanı düzeyinde kontrolden önce).