/ / Como evitar a inserção de "." "/" E "" no banco de dados SQL como sequência vazia - c #, sql, sql-server, entity-framework-6, caracteres especiais

Como evitar inserir “.” “/” E “” no banco de dados SQL como string vazia - c #, sql, sql-server, entidade-framework-6, caracteres especiais

no meu código eu tenho esse

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

O que estou tentando alcançar é que estou tentandoinsira todos os caracteres dessa cadeia de caracteres no banco de dados, e o banco de dados sempre deve lançar uma exceção, pois possui uma restrição, permitindo que apenas letras e números sejam inseridos.

Tudo funciona bem, exceto três caracteres - ".", "/" and "".

De alguma forma, esses valores ainda são inseridos na tabela, porque são convertidos em cadeias vazias. Não sei por que, mas talvez EF6 está fazendo isso.

Infelizmente, adicionar uma restrição por não permitir empty/NULL valores não é uma opção.

Alguma idéia de por que e como impedir a conversão desses caracteres em cadeias vazias?

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
}
}

Restrição que estou usando para impedir caracteres especiais:

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();

Respostas:

0 para resposta № 1

Isso deve ser tratado no próprio front endem vez de ir para o nível do banco de dados. Imagine um nome de arquivo inválido que chegue ao banco de dados, ele rejeita devido a suas restrições e reporta à interface do usuário. Você está desperdiçando recursos.

Manipular isso na interface do usuário salvará chamadas desnecessárias ao banco de dados.

Usar GetInvalidFileNameChars método:

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");
}