/ / Как да се предотврати поставянето "/" и "" в SQL база данни като празен низ "." - C #, SQL, SQL сървър, образувание-рамка-6, специални символи

Как да предотвратите вмъкването на. "" И "" в SQL база данни като празен низ - c #, sql, sql-server, entity-framework-6, специални знаци

в моя код имам това

string specialChar = @"|!#$%&/()=?»«@£§€{}.-;"<>_,";

Това, което се опитвам да постигна, е, че се опитвамвмъкнете всеки един символ от този низ в база данни, а база данни всеки път трябва да направи изключение, защото има ограничения, позволяващи вмъкване само на букви и цифри.

Всички работи добре, с изключение на три знака - ".", "/" and "".

По някакъв начин тези стойности все още се вмъкват в таблицата, защото се превръщат в празни струни. Не съм сигурен защо, но може би EF6 прави това.

За съжаление добавянето на ограничение за това, което не позволява empty/NULL стойностите не са опция.

Някакви идеи защо и как да предотвратите преобразуването на тези знаци в празни низове?

byte[] data = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };

foreach (var item in specialChar)
{
try
{
string tempName = item.ToString();
upload.Upload(tempName, data);
}

catch (Exception ex)
{
// this is not being thrown at specified characters
}
}

Ограничението, което използвам за предотвратяване на специални знаци:

CONSTRAINT [ck_No_Special_Characters] CHECK (NOT [name] like "%[^A-Z0-9]%")

Upload.cs

        var db = new testEntities();
var fileToUpload = new testFile();

// **this is where I"m using my chars**
fileToUpload.name = Path.GetFileNameWithoutExtension(name);
fileToUpload.extension = Path.GetExtension(name);
fileToUpload.data = data;

db.test.Add(fileToUpload);
db.SaveChanges();

Отговори:

0 за отговор № 1

Това трябва да се извършва от самия преден крайвместо да отидете на ниво база данни. Представете си, че невалидно име на файл достига до база данни, то отхвърля поради вашите ограничения и отчети обратно към потребителския интерфейс. Вие губите ресурси.

Работата с това в потребителския интерфейс ще спести ненужни обаждания в бази данни.

употреба GetInvalidFileNameChars метод:

if (name.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) == -1)
{
var db = new testEntities();
var fileToUpload = new testFile();

// **this is where I"m using my chars**
fileToUpload.name = Path.GetFileNameWithoutExtension(name);
fileToUpload.extension = Path.GetExtension(name);
fileToUpload.data = data;

db.test.Add(fileToUpload);
db.SaveChanges();
}
else
{
Console.WriteLine("Filename has invalid characters");
}