在Linq中是否有一个方法可用于构建SQL字符串,如"... where(a = 1)OR(a = 2)"?
我@Injectable在bootstrap中定义了一个服务.我想在不使用构造函数注入的情况下获取服务的实例.我试过使用ReflectiveInjector.resolveAndCreate但似乎创建了一个新实例.
我试图做的原因是我有一个由许多组件派生的基本组件.现在我需要访问服务,但我不想将它添加到ctor,因为我不想在所有衍生组件上注入服务.
TLDR:我需要一个 ServiceLocator.GetInstance<T>()
更新: RC5 +的更新代码:存储用于组件的进样器实例
我有一个扩展方法,使用字符串值动态过滤Linq到实体结果.它工作正常,直到我用它来过滤可空列.这是我的代码:
public static IOrderedQueryable<T> OrderingHelperWhere<T>(this IQueryable<T> source, string columnName, object value)
{
ParameterExpression table = Expression.Parameter(typeof(T), "");
Expression column = Expression.PropertyOrField(table, columnName);
Expression where = Expression.GreaterThanOrEqual(column, Expression.Constant(value));
Expression lambda = Expression.Lambda(where, new ParameterExpression[] { table });
Type[] exprArgTypes = { source.ElementType };
MethodCallExpression methodCall = Expression.Call(typeof(Queryable),
"Where",
exprArgTypes,
source.Expression,
lambda);
return (IOrderedQueryable<T>)source.Provider.CreateQuery<T>(methodCall);
}
Run Code Online (Sandbox Code Playgroud)
这是我如何使用它:
var results = (from row in ctx.MyTable select row)
.OrderingHelperWhere("userId", 5);//userId is nullable column
Run Code Online (Sandbox Code Playgroud)
这是我在将可用于可空表列时使用的异常:
没有为类型'System.Nullable`1 [System.Int32]'和'System.Int32'定义二元运算符GreaterThanOrEqual
我无法理解这一点.我该怎么办?
如何在计算机上打开/运行YML撰写文件?我已经安装了Docker for Windows和Docker工具,但无法弄清楚如何.
在RC5之前我使用appref injector作为服务定位器,如下所示:
Startup.ts
bootstrap(...)
.then((appRef: any) => {
ServiceLocator.injector = appRef.injector;
});
Run Code Online (Sandbox Code Playgroud)
ServiceLocator.ts
export class ServiceLocator {
static injector: Injector;
}
Run Code Online (Sandbox Code Playgroud)
组件:
let myServiceInstance = <MyService>ServiceLocator.injector.get(MyService)
Run Code Online (Sandbox Code Playgroud)
现在在bootstrapModule()中执行相同操作.然后()不起作用,因为组件似乎在promise之前开始执行.
有没有办法在组件加载之前存储喷油器实例?
我不想因为我使用其中的许多组件衍生,我宁可不注射器注入到所有这些基本成分的注射器使用构造器注入.
当您打开解决方案,项目或网站时,是否有办法强制获取最新版本?在TFS 2008上使用VS.NET 2008和2010.
我有一个简单的XmlReader:
XmlReader r = XmlReader.Create(fileName);
while (r.Read())
{
Console.WriteLine(r.Value);
}
Run Code Online (Sandbox Code Playgroud)
问题是,Xml文件中包含ISO-8859-9字符,这使得XmlReader抛出" Invalid character in the given encoding."异常.我可以<?xml version="1.0" encoding="ISO-8859-9" ?>在开头添加行来解决这个问题,但是我想以另一种方式解决这个问题,以防我无法修改源文件.如何更改XmlReader的编码?
我有几个组件装饰器声明,我在每个组件上重复,例如:
@Component({
moduleId: module.id,
directives: [BootstrapInputDirective]
})
Run Code Online (Sandbox Code Playgroud)
如何将这些声明应用于我的所有组件?我试图用这个装饰器创建一个基类,并用它扩展其他类,但基类装饰似乎不适用于派生类.
我正在使用TransactionScope将Linq中的数据提交给SQL.我的问题是,如果我在同一范围内使用多个SubmitChanges,是否会在出现错误时回滚所有范围,或者只是在最后一次SubmitChanges之后进行更改?例如:
using (TransactionScope trans = new TransactionScope())
{
using (dbDataContext db = new dbDataContext())
{
try
{
//do some insert
db.SubmitChanges();
//do some updates
db.SubmitChanges();
trans.Complete();
}
catch(Exception ex){}
}
}
Run Code Online (Sandbox Code Playgroud)
如果更新SubmitChanges抛出异常,插入SubmitChanges也会回滚吗?
我想在内部建立一个实体.我已将实体,其标量属性和导航属性更改为内部.我尝试构建它时遇到此错误:
错误6036:EntityType"文件"具有"内部"可访问性,而EntitySet"文件"具有"公共"可访问性的get属性.EntitySet的get属性的访问权限不得低于包含EntityType访问权限的访问权限.
我无法编辑designer.cs,因为它没有生成此错误.我检查了edmx文件,但没有任何公共值与"文件"或"文件"相关联.我该怎么办?
.net ×4
angular ×3
c# ×2
linq ×2
angular2-di ×1
docker ×1
encoding ×1
lambda ×1
linq-to-sql ×1
tfs ×1
tfs2008 ×1
typescript ×1
where-clause ×1
xml ×1