Вот что я нашел:
Я нашел preact shadow dom , который позволяет реализацию теневого DOM. Теневой DOM допускает ограниченный CSS, что означает, что CSS привязан только к компоненту и не может быть подвержен влиянию извне и не может вытекать за пределы его области действия.
Однако, обратите внимание, что MS Edge в настоящее время не поддерживает теневой DOM (см. Их план ).
Я также обнаружил, что локальная область видимости CSS может быть сделана только с помощью веб-пакета. См. https://github.com/webpack-contrib/css-loader . Однако загрузчик явно заменяет локальные селекторы уникальными идентификаторами.
Пример:
:local(.className) {
background: red;
}
приводит к:
._23_aKvs-b8bW2Vg3fwHozO {
background: red;
}
var query = from q in session.Linq<Person>()
where q.FirstName.StartsWith(firstName)
&& q.LastName.StartsWith(lastName)
&& q.Phones.Any(p => p.Number.Contains(phone))
select q;
// This block of code was found in the NHibernate.Linq source
// using NHibernate.Linq.Visitors;
// using NHibernate.Engine;
System.Linq.Expressions.Expression expression = query.Expression;
expression = Evaluator.PartialEval(expression);
expression = new BinaryBooleanReducer().Visit(expression);
expression = new AssociationVisitor((ISessionFactoryImplementor)session.SessionFactory).Visit(expression);
expression = new InheritanceVisitor().Visit(expression);
expression = CollectionAliasVisitor.AssignCollectionAccessAliases(expression);
expression = new PropertyToMethodVisitor().Visit(expression);
expression = new BinaryExpressionOrderer().Visit(expression);
NHibernateQueryTranslator translator = new NHibernateQueryTranslator(session);
object results = translator.Translate(expression, ((INHibernateQueryable)query).QueryOptions);
// My LINQ query converted to ICriteria
ICriteria resultsCriteria = results as ICriteria;
// Convert to criteria that returns the row count
ICriteria rowCountCriteria = CriteriaTransformer.TransformToRowCount(resultsCriteria);
IList multiResults = session.CreateMultiCriteria()
.Add(resultsCriteria.SetMaxResults(20))
.Add(rowCountCriteria)
.List();
IList people = (IList)multiResults[0];
int resultsCount = (int)((IList)multiResults[1])[0];
из http://rndnext.blogspot.com/2009/05/using-nhibernate-multicriteria-and-linq.html
NHibernate.Linq сам использует NHibernateQueryTranslator для перевода из выражения LINQ в ICriteria. Вы также можете сделать это, а затем передать полученный ICriteria в ваш IMultiCriteria.
У меня есть решение, которое позволяет одновременно группировать стратегии выборки используя NHibernate Linq, но код является королем комплекса. Это слишком много, чтобы перечислять здесь. Я собираюсь поговорить об этом в своем блоге на devlicio.us довольно скоро. Я'