class Enum {
constructor (...vals) {
vals.forEach( val => {
const CONSTANT = Symbol(val);
Object.defineProperty(this, val.toUpperCase(), {
get () {
return CONSTANT;
},
set (val) {
const enum_val = "CONSTANT";
// generate TypeError associated with attempting to change the value of a constant
enum_val = val;
}
});
});
}
}
Пример использования:
const COLORS = new Enum("red", "blue", "green");
Это специально упоминается в документации как часть Entity SQL. Вы получаете сообщение об ошибке?
// LIKE and ESCAPE
// If an AdventureWorksEntities.Product contained a Name
// with the value 'Down_Tube', the following query would find that
// value.
Select value P.Name FROM AdventureWorksEntities.Product
as P where P.Name LIKE 'DownA_%' ESCAPE 'A'
// LIKE
Select value P.Name FROM AdventureWorksEntities.Product
as P where P.Name like 'BB%'
На самом деле я ничего не знаю об EF, но в LINQ to SQL предложение LIKE обычно выражается с помощью String.Contains:
where entity.Name.Contains("xyz")
переводится в
WHERE Name LIKE '%xyz%'
(используйте StartsWith
и EndsWith
для другого поведения.)
Я не совсем уверен, полезно ли это, потому что я не понимаю, что вы имеете в виду, когда говорите, что пытаетесь реализовать НРАВИТСЯ. Если я полностью неправильно понял, дайте мне знать, и я удалю этот ответ :)
re: "мы хотели бы иметь возможность сопоставления на blah blah foo bar foo? Bar? Foo * bar? И другие сложные шаблоны. " На самом деле я этого не пробовал (еще не нужно было), но пробовали ли вы использовать System.Text.RegularExpressions.RegEx?