是否可以将外键分配给PostgreSQL中的json属性?这是我想要实现的一个例子,但它不起作用:
CREATE TABLE Users (Id int NOT NULL PRIMARY KEY);
CREATE TABLE Data (
    Id int NOT NULL PRIMARY KEY,
    JsonData json NOT NULL, -- [{Id: 1, somedata: null},{Id: 2, somedata: null}, ...]
    CONSTRAINT FK_Users_Data FOREIGN KEY (JsonData->Id) REFERENCES Users(Id) -- this constraint will fail
);
Run Code Online (Sandbox Code Playgroud) 我使用以下代码重新排序我网站上的项目:
$(document).ready(function () {
    $("#my-list").sortable({
        stop: function (event, ui) {
            var id = $(ui.item).attr('id');
            var url = '/en/account/changeposition?id=idreplace&position=posReplace';
            url = url.replace("idreplace", id);
            url = url.replace("posReplace", ui.item.index());
            window.location.href = url;
        },
        distance: 15
    });
});
Run Code Online (Sandbox Code Playgroud)
但是,即使我没有在同一个地方更改元素位置和放置元素,Jquery UI也会调用'stop'函数.
是否可以在不使用自定义数据属性的情况下检测元素索引(位置)是否已更改?
// I would like to avoid adding custom data attributes like this:
<li id="id100" data-original-position="1"></li>
<li id="id101" data-original-position="2"></li>
Run Code Online (Sandbox Code Playgroud) 我们开始在我们的网站上使用内容安全策略(CSP),我注意到许多用户通过webviewprogressproxy URL违反了CSP规则.在这种情况下,我收到CSP的以下报告:
{"csp-report":{  
    "document-uri":"http://example.com/en/booking/b2",
    "referrer":"http://example.com/en/booking/b1/nnn",
    "violated-directive":"default-src 'self'",
    "original-policy":"default-src 'self'; font-src data: 'self'; img-src 'self' www.google-analytics.com data: s3.amazonaws.com; script-src 'self' www.google-analytics.com; report-uri /cspreport",
    "blocked-uri":"webviewprogressproxy://",
    "source-file":"http://example.com/en/booking/b2",
    "line-number":1
}}
User-Agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B440 [FBAN/MessengerForiOS;FBAV/28.1.0.50.260;FBBV/10708012;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.2;FBSS/2; FBCR/giffgaff;FBID/phone;FBLC/en_US;FBOP/5]
Run Code Online (Sandbox Code Playgroud)
如您所见,有一些带有webviewprogressproxy协议的URL.但是,我们不使用此协议,当我们查看User-Agent时,似乎iOS上的某些Facebook应用程序会导致此错误,但我不确定这一点.
有谁知道导致这种错误的原因以及我们如何避免这种错误?
在我的C#程序中,我不想使用字节数组,因此我将rowversion数据类型转换为bigint:
SELECT CAST([version] AS BIGINT) FROM [dbo].[mytable]
Run Code Online (Sandbox Code Playgroud)
所以我收到一个数字而不是字节数组.这种转换是否总是成功的,是否存在任何可能的问题?如果是这样,我应该在哪种数据类型中转换rowversion?
我想将Guids存储在不支持Guid/uniqueidentifier数据类型的数据库中,因此我使用.ToByteArray()方法将Guid转换为字节数组.但是,此方法以strage方式转换值:
11223344-5566-7788-9900-AABBCCDDEEFF
will become
44, 33, 22, 11, 66, 55, 88, 77, 99, 00, AA, BB, CC, DD, EE, FF
Run Code Online (Sandbox Code Playgroud)
据我了解,这是因为字节顺序.
我想知道这个方法是否会在每个平台(86x硬件,64x硬件,Linux,Windows等)上返回相同的结果,并且无论在哪个平台上运行我的软件,都不会有字节顺序的变化.
在我的项目中,我需要计算重复事件的日期.一开始我只有一个开始日期/时间以及该事件必须重复的信息:
Every Day
Every Week
Every 2 Weeks
Every 3 Weeks
Every Month
Every 2 Months
...
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?它应该可以正常使用不同的时区和日节省时间设置.我想我应该在本地DateTime中添加几天/几周/月,然后将其转换为UTC.但我不确定这一点.如果我添加几天会发生什么,这将是我们需要向前调整我们的时钟一小时的时间.在这种情况下,此时间不存在.
下面是我写的代码,但我不确定它在每种情况下都能正常工作:
private static List<DateTime> FindOccurrences(DateTime localStart, Repeat repeat, int occurrences)
{
    var result = new List<DateTime> { localStart };
    switch (repeat)
    {
        case Repeat.Daily:
            for (int i = 1; i <= occurrences; i++)
                result.Add(localStart.AddDays(i));
            break;
        case Repeat.Every2Weeks:
            for (int i = 1; i <= occurrences; i++)
                result.Add(localStart.AddDays((7 * 2) * i));
            break;
        ...
    }
    return result;
}
public List<Event> CreateRepeating(string timeZone, Repeat …Run Code Online (Sandbox Code Playgroud) 我听说可以在ASP.NET WEB API 2中创建异步验证属性,但我没有找到任何示例.我想创建一个像这样的验证类,但异步方式:
public class UserNameAvailable : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var username = value as string;
        if(username != null)
        {
            return !Database.UserExists(username); // must be async
        }
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud) 我使用下面的代码来限制我的ASP.NET Web Api:
public class Throttle : ActionFilterAttribute
{
    public override async Task OnActionExecutingAsync(HttpActionContext context, CancellationToken cancellationToken)
    {
            // ...
            if (throttle)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Conflict));
            }
    }
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法返回错误代码429,因为它不在HttpStatusCode枚举中.有没有办法返回自定义错误代码?
是否可以使用 Json.NET 使 Dapper.NET 序列化复杂的属性?对象应该被序列化,然后作为字符串存储到列中:
public class Person
{
    public string Id { get; set; }
    public Address Address { get; set; } // store this as string in database
    ...
}
public class Address
{
    public string City { get; set; }
    public string ZipCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我们使用 ADO.NET 手动执行此操作:
command.Parameters.AddWithValue("@Id", obj.Id);
command.Parameters.AddWithValue("@Address", obj.Address != null ? JsonConvert.Serialize(obj.Address) : (object) DBNull.Value);
...
Run Code Online (Sandbox Code Playgroud) 我需要重新排序表中的项目,如以下示例所示:
Original:
Id    Pos (int)
---------
a     1
b     2
c     3
d     4
e     5
I need this result after moving d to the second row:
Id    Pos (int)
---------
a     1
b     3
c     4
d     2
e     5
Run Code Online (Sandbox Code Playgroud)
如您所见,它不是一个简单的交换,我需要在插入位置后将位置增加1,并在插入之前保留行.我试着这样解决它:
UPDATE [Table] SET Pos = 2 WHERE Id = 'd'
MERGE INTO [Table] T USING
(
    SELECT ROW_NUMBER() OVER(ORDER BY Pos) AS Position, Id FROM [Table]
) S
ON T.Id = S.Id
WHEN MATCHED THEN UPDATE SET Pos …Run Code Online (Sandbox Code Playgroud) c# ×2
sql-server ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
dapper ×1
datetime ×1
guid ×1
jquery ×1
jquery-ui ×1
postgresql ×1
t-sql ×1
timezone ×1
uiwebview ×1