我的目标是从表中删除不是分组CaseKey的MAX(recordDate)的所有记录.因此,如果我有3组3个casekeys的9条记录,并且每个casekey有3个日期.我将删除每组的2个较低日期,并得出3个总记录,仅剩下每个记录的MAX(recordDate).
我有以下SQL查询:
DELETE FROM table
WHERE tableID NOT IN (
SELECT tableID
FROM (
Select MAX(recordDate) As myDate, tableID From table
Group By CaseKey
) As foo
)
Run Code Online (Sandbox Code Playgroud)
我收到错误:第3行出错...列'table.tableID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
很显然,我可以添加TABLEID我Group By子句,但随后该语句的结果不正确,并返回所有行,而不是仅仅返回分组CaseKeys的MAX recordDate.
服务器现在已经关闭,但明显的答案是:(来自WildPlasser的答案的微小调整)
DELETE zt FROM ztable zt
WHERE EXISTS (
SELECT * FROM ztable ex
WHERE ex.CaseKey = zt.CaseKey
AND ex.recordDate > zt.recordDate
);
Run Code Online (Sandbox Code Playgroud)
换句话说,对于zt中的每个记录,运行一个查询以查看同一记录是否也有一个记录具有更高的recordDate.如果是,则WHERE EXISTS语句通过并删除记录,否则WHERE语句失败并且记录是其自己的MAX recordDate.
感谢WildPlasser,因为这种简单的方法让我感觉不知所措.
我在.NET 4.5.2中使用c#,推送到SQL Server 2017 14.0.1000.169
在我的数据库中,我有一个带有DateAdded字段的表,类型DateTimeOffset
.
我正在尝试使用以下代码进行BulkCopy:
private Maybe BulkCopy(SqlSchemaTable table, System.Data.DataTable dt, bool identityInsertOn)
{
try
{
var options = SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.UseInternalTransaction; // | SqlBulkCopyOptions.CheckConstraints; // Tried CheckConstraints, but it didn't change anything.
if (identityInsertOn) options |= SqlBulkCopyOptions.KeepIdentity;
using (var conn = new SqlConnection(_connString))
using (var bulkCopy = new SqlBulkCopy(conn, options, null))
{
bulkCopy.DestinationTableName = table.TableName;
dt.Columns.Cast<System.Data.DataColumn>().ToList()
.ForEach(x => bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(x.ColumnName, x.ColumnName)));
try
{
conn.Open();
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
return Maybe.Failure(ex);
} …
Run Code Online (Sandbox Code Playgroud) 在回答为什么访问令牌会过期?,提供的第一点指出:
[Bearer-Tokens] 是短暂的并且需要刷新,它们限制了攻击者滥用被盗令牌的时间。
但是当使用访问令牌时(来自本机应用程序),客户端使用刷新令牌来获取新的访问令牌,并将该新令牌发送回请求者。因此,如果攻击者使用其他人的访问令牌,他每次只会收到一个全新的访问令牌。
那么谁在乎令牌的持续时间呢?如果攻击者得到它,只要刷新令牌持续,他们就已经接管了会话
我已经知道我的问题的十几个答案,但我对每个答案都有疑问。我最初的问题很长,因为我解释了每个场景以及它们如何无关紧要或错误(据我所知)。所以请尽量帮助我理解,如果我认为答案有警告,我会发表评论。
添加/编辑 - 希望通过我的附加信息获得更多答案
是的?不?由于 Resource Owner 正在Actively使用该网站,该网站与 Client 保持不断的通信,并且 Client 获得一个新的 Access Token(使用刷新令牌)并将其发送回网站,因此Active用户可以继续使用该网站,而不会每 5 分钟被踢出一次。
因此,如果任何人获得该访问令牌,并用它攻击客户端,客户端将继续向拥有该访问令牌的任何人发送新的访问令牌。授予:单次刷新后,这两个人中的一个将拥有错误的访问令牌并被启动,但不一定是正确的人。
如果我有十几个端点,并且我的 WebAPI 服务配置为TLS 1.1
和TLS 1.2
,我如何检查每个传入的端点请求以查看协商的是哪个版本?
因此,如果我的端点的使用者目前仅支持TLS 1.0
and TLS 1.1
,他们将(显然?)协商TLS 1.1
握手。但是如果不同的消费者支持TLS 1.2
and TLS 1.3
,他们会(显然?)协商TLS 1.2
握手。
我想跟踪我所有的消费者,看看正在协商什么握手。我如何按请求执行此操作?
在这个问题:Ef Many To Many,一个关于如何手动指定链接表的答案.但我有一个稍微独特的情况(我肯定不是真的很独特).
我的两个表都有一个Id字段.EG:[dbo].[Account].[Id]
和[dbo].[Person].[Id]
.我的Code-First中的每个表都有以下OnModelCreating:
modelBuilder.Entity<Account>.HasKey(x => x.Id);
modelBuilder.Entity<Person>.HasKey(x => x.Id);
Run Code Online (Sandbox Code Playgroud)
但我的[dbo].[AccountsToPersons]...
桌子有EG:[AccountId]
和[PersonId]
AccountsToPersons表不由代码中的类表示.
我显然已经有了一个现有的模型,但是我们使用EF Code-First Fluent API而不是从数据库更新模型.
那么如何更改此代码以使其与映射不同的ID列名称一起使用?
public DbSet<Person> Persons { get; set; }
public DbSet<Account> Accounts { get; set; }
. . .
modelBuilder.Entity<Account>()
.HasMany(a => a.Persons)
.WithMany()
.Map(x =>
{
x.MapLeftKey("AccountId"); // <-- Account.Id to AccountsToPersons.AccountId??
x.MapRightKey("PersonId"); // <-- Person.Id to AccountsToPersons.PersonId??
x.ToTable("AccountsToPersons");
});
Run Code Online (Sandbox Code Playgroud)
运行基本的Linq To EF Query时(from x in context.Accounts select x).ToList();
,查询失败并显示以下错误:
是否有任何通知(电子邮件、文本、屏幕消息、彩色文本等)可以告诉我是否已提交特定文件?
例如:如果开发人员提交了对Web.Config
或 的更改Source/Lawls/CrazySauce.js
,我有哪些选项可以引起我的注意?
至少,与 Pull-Request 相关的东西是可以的。虽然我并不总是批准/合并的人。充其量,电子邮件或自动 Jira 票或其他东西会很棒。
在《魔兽世界》普通 Lua 插件开发中,如何发出 HTTP 调用来接收返回的数据?如果没有,我如何在玩游戏时从网络源获取数据?
我有一种感觉,答案很短,但希望在 Stack Overflow 上提出并回答问题。我的研究结果有所欠缺,我记得在 2007 年左右做了一些 LUA,但很失望。
我有一个像这样的解决方案,在 Git 中存储:
AwesomeSln
---Web.csproj
---Services.csproj
---Core.csproj
---UnitTests.csproj
---SDK.csproj
Run Code Online (Sandbox Code Playgroud)
大多数解决方案是 Web,CI 由 Azure 处理。测试运行,网络发布,wutevz。
但 SDK 项目是一个相关的 NuGet 包,它为使用此 Web 项目提供帮助。该公司的 NuGet 是使用 TeamCity 设置的。
因此,我想做的是,如果 SDK 项目发生更改,则让 TeamCity 触发 NuGet 构建。但每当发生任何随意的检查时就不会了。
有没有办法仅在一个特定项目发生更改时触发 NuGet 构建?
我的许多企业应用程序都包含多个c#解决方案的架构文本,如下所述.
我有一个类库,包含表示信息的类和接口.例如,一个类表示用户并包含适当的属性.与结构相似.我的任何其他项目都可以引用此项目,以全面了解它们之间传输的对象.这个项目很少或没有逻辑.我称之为"存储库".
我有一个单独的解决方案来处理持久性的访问.它几乎只是调用从持久性源(数据库,网站,文件等)收集数据的包装器.它接收的信息集被格式化为我的"存储库"的类.这个项目很少或没有逻辑.我称之为"持久访问"或"数据访问".该解决方案还主要包括集成测试和几个单元测试.
我有一个单独的解决方案,它为逻辑组织了类和方法.每当客户应用程序(webservice,wpf,web,android)需要由我公司的业务需求确定的逻辑输出时,方法在逻辑上组织成一个或多个这些类.该项目调用我的"持久访问",并且可以以通用类型/集合的形式或以我的"存储库"类型之一的形式接收和输出.该项目根据业务需求包含多个类和几乎所有企业应用程序的逻辑.我称之为"商业逻辑". 该解决方案还主要包括单元测试,也可能包括几个集成测试.
我有一个asp.net Web应用程序项目.我的Web应用程序有javascript,css,aspx,代码隐藏文件,以及其他一些自然伴随这些东西的基础知识(一些ashx).如果页面需要逻辑或数据以确定页面上显示的内容,则Code Behind文件会调用"业务逻辑"来进行这些确定.asp.net aspx对象唯一做的就是格式化这些信息.我将这些页面中的每一个称为"视图"或"ViewModels". 这个应用程序包含很少的测试,因为它主要只是aspx,xhtml,css和代码隐藏中的一对受保护的事件处理程序.(可能对ashx文件进行了一些测试.)
我的困惑是: 在ASP.Net Web开发术语中,我想说我正在使用模型 - 视图 - 控制器架构.但我不使用Microsoft MVC Web应用程序,因为我想将我的业务逻辑完全分离出网站.
那么说我使用MVC是正确的吗?我以前创建了MS MVC Web应用程序,但是对于可能有多个用于业务逻辑的复杂项目(大多数都是这样),我使用了我所描述的这种架构.或者,我使用其他一些预先命名的架构吗? 我想知道与Web开发有关的架构模式名称. 所以MVVM本身并不直接与我相关.
有没有办法在c#中获得StackExchange.Redis键的TTL(生存时间)?
我有一个简单的中间件:
public class MiddlewareInterceptor
{
RequestDelegate _next;
public MiddlewareInterceptor(RequestDelegate next)
{
_next = next;
}
public Task Invoke(HttpContext ctx)
{
ctx.Response.WriteAsync("<h2>From SomeMiddleWare</h2>");
return _next(ctx);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Startup.cs配置方法中,我像这样挂钩:
app.UseMiddleware<MiddlewareInterceptor>();
Run Code Online (Sandbox Code Playgroud)
上面的构建和应用程序似乎运行正常,但我在拦截器Invoke方法中的断点永远不会命中.同样,从来没有任何产出.我也试过了Debug.WriteLine
.
现在,我也试过这个方法:
public class MiddlewareInterceptor : OwinMiddleware
{
public MiddlewareInterceptor(OwinMiddleware next) : base(next){}
public override async Task Invoke(IOwinContext context)
{
Debug.WriteLine(context.Request.Uri.ToString());
await Next.Invoke(context);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Startup.cs配置方法中,我像这样挂钩:
app.Use(next => new MiddlewareInterceptor(next).Invoke);
Run Code Online (Sandbox Code Playgroud)
不幸的是,基础OwinMiddleware
构造函数正在寻找下一个OwinMiddleware
作为参数,与你不同RequestDelegate
.所以我的app.Use
实例化MiddlewareInterceptor
失败是因为next
类型RequestDelegate
.
最后,我在Configure方法中直接尝试了一个内联函数,它也永远不会遇到断点:
app.Use(async (ctx, next) => …
Run Code Online (Sandbox Code Playgroud) c# ×5
asp.net-mvc ×2
git ×2
asp.net-core ×1
bitbucket ×1
datatable ×1
lua ×1
middleware ×1
nuget ×1
oauth-2.0 ×1
owin ×1
sql ×1
sql-server ×1
ssl ×1
teamcity ×1
tls1.2 ×1