所以这里有几个类似的问题,但我仍然有问题确定我在简化场景中究竟缺少了什么.
假设我有以下表格,巧妙地以自己的名字命名:
'JohnsParentTable' (Id, Description)
'JohnsChildTable' (Id, JohnsParentTableId, Description)
Run Code Online (Sandbox Code Playgroud)
结果类看起来像这样
public class JohnsParentTable
{
public int Id { get; set; }
public string Description { get; set; }
public virtual ICollection<JohnsChildTable> JohnsChildTable { get; set; }
public JohnsParentTable()
{
JohnsChildTable = new List<JohnsChildTable>();
}
}
internal class JohnsParentTableConfiguration : EntityTypeConfiguration<JohnsParentTable>
{
public JohnsParentTableConfiguration()
{
ToTable("dbo.JohnsParentTable");
HasKey(x => x.Id);
Property(x => x.Id).HasColumnName("Id").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(x => x.Description).HasColumnName("Description").IsRequired().HasMaxLength(50);
}
}
public class JohnsChildTable
{
public int Id { get; set; }
public string Description …Run Code Online (Sandbox Code Playgroud) 我有一个简单的应用程序与以下代码:
FileInfo[] files = (new DirectoryInfo(initialDirectory)).GetFiles();
List<Thread> threads = new List<Thread>(files.Length);
foreach (FileInfo f in files)
{
Thread t = new Thread(delegate()
{
Console.WriteLine(f.FullName);
});
threads.Add(t);
}
foreach (Thread t in threads)
t.Start();
Run Code Online (Sandbox Code Playgroud)
让我们说在'I = initialDirectory'目录中我有3个文件.然后,该应用程序应创建3个线程,每个线程打印一个文件名; 但是,每个线程将打印出'files'数组中最后一个文件的名称.
为什么是这样?为什么当前文件'f'变量无法正确设置匿名方法?
在我的SQL 2005服务器上,我有一个通过OraOLEDB.Oracle提供程序连接到Oracle的链接服务器.
如果我通过4部分标识符运行查询,如下所示:
SELECT * FROM [SERVER]...[TABLE] WHERE COLUMN = 12345
Run Code Online (Sandbox Code Playgroud)
完成需要一分多钟.如果我像这样运行相同的查询:
SELECT * FROM OPENQUERY(SERVER, 'SELECT * FROM TABLE WHERE COLUMN = 12345')
Run Code Online (Sandbox Code Playgroud)
它立即完成.是否有一个设置我在某个地方错过了让第一个查询在相当长的一段时间内运行?还是我坚持使用openquery?
我有这样的路线设置:
export const APP_ROUTES: Routes = [
{
path: '',
resolve: {
user: CurrentUserResolver
},
children: [
{
path: ':sectionKey',
canActivate: [SectionAccessGuard],
children: [
{
path: 'dashboard',
component: DashboardComponent
}
]
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
父路由将通过HTTP调用检索用户,并且我希望:sectionKey仅当当前用户有权访问我的子路由时才激活.问题是,看起来我的canActivate SectionAccessGuard是在完全填充快照之前调用的:
@Injectable()
export default class SectionAccessGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
console.log(route.data);
console.log(route);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
在控制台中,第一个条目什么都没有; 但是,第二个条目最终将user填充该字段.
我知道该canActivate方法也可以返回一个Observable<boolean>,但是我没有看到任何关于如何等到解析完成的钩子.
我在这里错过了什么?我觉得这应该是非常直接的.我目前正在使用angular v4.0.0-rc.2
处理这样一种情况的正确方法是什么,你有两个足够相似的接口,你想通过同一个逻辑运行它们:
interface DescriptionItem {
Description: string;
Code: string;
}
interface NamedItem {
Name: string;
Code: string;
}
function MyLogic(i: DescriptionItem | NamedItem) {
var desc = (<DescriptionItem>i).Description || (<NamedItem>i).Name;
return i.Code + ' - ' + desc;
}
Run Code Online (Sandbox Code Playgroud)
这有效; 但是,我的问题是改善这var desc = ...条线.我有什么最好的选择?或者有没有更好的方法来处理Typescript中的这种情况?
我有以下代码:
MemoryStream ms = new MemoryStream();
XmlWriter w = XmlWriter.Create(ms);
w.WriteStartDocument(true);
w.WriteStartElement("data");
w.WriteElementString("child", "myvalue");
w.WriteEndElement();//data
w.Close();
ms.Close();
string test = UTF8Encoding.UTF8.GetString(ms.ToArray());
Run Code Online (Sandbox Code Playgroud)
XML生成正确; 但是,我的问题是字符串'test'的第一个字符是ï(char#239),使得它对某些xml解析器无效:这是来自哪里?我究竟做错了什么?
我知道我可以通过在第一个角色之后开始解决问题,但我宁愿知道它为什么存在而不仅仅是修补问题.
谢谢!
假设我有一个存储过程,它会在参数时执行复杂的逻辑@ComplicatedSearch = 1.当它设置为1时,我@ValidIds使用此过程可以返回的有效行填充变量表.当它为0时,逻辑被绕过,我们不需要过滤掉要返回的行.
所以,通过这个逻辑,我最终会得到如下声明:
SELECT
m.*
,a.*
FROM
MyTable m
INNER JOIN AdditionalInfoTable a
ON m.Id = a.MyTableId
WHERE
(@ComplicatedSearch = 0 OR EXISTS(SELECT * FROM @ValidIds WHERE Id = m.Id))
Run Code Online (Sandbox Code Playgroud)
这很好用; 但是,我认为将MyTable加入@ValidIds会更有效,适用时反对使用EXISTS(),特别是当MyTable包含大量行时.
有没有办法在不编写多个查询的情况下执行下面的操作?(实际的查询非常大,因此有多个版本的连接和不连接都不是理想的)
SELECT
m.*
,a.*
FROM
MyTable m
ONLY DO THIS IF ComplicatedSearch = 1 PLEASE: INNER JOIN @ValidIds v
ON m.Id = v.Id
INNER JOIN AdditionalInfoTable a
ON m.Id = a.MyTableId
Run Code Online (Sandbox Code Playgroud) 我有一个Web服务,可以分为两个主要部分:
[WebMethod]
MyServiceCall()
{
//Do stuff the client cares about
//Do stuff I care about
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在另一个线程上运行第二部分,以便客户端不等待它:一旦用户的逻辑完成,立即发送他们的信息,但继续处理我关心的东西(记录等).
从Web服务,以异步方式运行第二部分的推荐方法是什么,以便尽快让用户返回信息? BackgroundWorker? QueueUserWorkItem?
看起来当您使用$ http服务发送请求时,referer标头设置为基本URL而没有angular $ location信息.
如何将$ location.path()附加到所有请求的标头?
我们的API调用将在发生错误时记录该引用标头; 然而,这将是非常有益的,如果我们可以存储用户的实际位置("stackoverflow.com/#/question/1234"而不仅仅是"stackoverflow.com/")
这是我的示例的简化版本:
using (DbCommand cmd = new SqlCommand("myProcedure", (SqlConnection)DataAccessHelper.CreateDatabase().CreateConnection()) { CommandType = CommandType.StoredProcedure })
{
cmd.Connection.Open();
using(IDataReader dr = cmd.ExecuteReader())
doWork(dr);
}
Run Code Online (Sandbox Code Playgroud)
处理命令时,连接是否已关闭?或者我是否需要首先使用语句进行连接,然后在闭包中创建命令?