小编FLI*_*KER的帖子

计算表中连续出现的值的数量

我在桌子下面

create table #t (Id int, Name char)

insert into #t values
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'B'),
(5, 'B'),
(6, 'B'),
(7, 'C'),
(8, 'B'),
(9, 'B')
Run Code Online (Sandbox Code Playgroud)

我想在name列中计算连续值

+------+------------+
| Name | Repetition |
+------+------------+
| A    |          2 |
| B    |          4 |
| C    |          1 |
| B    |          2 |
+------+------------+
Run Code Online (Sandbox Code Playgroud)

我尝试过的最好的事情是:

select Name
, COUNT(*) over (partition by Name order by Id) AS Repetition
from #t
order by Id
Run Code Online (Sandbox Code Playgroud)

但它没有给我预期的结果

t-sql sql-server aggregation sql-server-2012

17
推荐指数
2
解决办法
1万
查看次数

.NET系统类型为SqlDbType

我正在寻找.Net System.Type和SqlDbType之间的智能转换.我发现它是以下想法:

private static SqlDbType TypeToSqlDbType(Type t)
{
    String name = t.Name;
    SqlDbType val = SqlDbType.VarChar; // default value
    try
    {
        if (name.Contains("16") || name.Contains("32") || name.Contains("64"))
            {
                name = name.Substring(0, name.Length - 2);
            }
            val = (SqlDbType)Enum.Parse(typeof(SqlDbType), name, true);
        }
        catch (Exception)
        {
            // add error handling to suit your taste
        }

        return val;
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码不是很好,是一个代码气味,这就是为什么我写了以下,天真,不聪明,但有用的功能,基于https://msdn.microsoft.com/en-us/library/cc716729( v = vs.110).aspx:

   public static SqlDbType ConvertiTipo(Type giveType)
    {
       var typeMap = new Dictionary<Type, SqlDbType>();

        typeMap[typeof(string)] = SqlDbType.NVarChar;
        typeMap[typeof(char[])] = SqlDbType.NVarChar; …
Run Code Online (Sandbox Code Playgroud)

c# ado.net system.data

14
推荐指数
2
解决办法
1万
查看次数

将XML转换为通用列表

我正在尝试将XML转换为List

<School>
  <Student>
    <Id>2</Id>
    <Name>dummy</Name>
    <Section>12</Section>
  </Student>
  <Student>
    <Id>3</Id>
    <Name>dummy</Name>
    <Section>11</Section>
  </Student>
</School>
Run Code Online (Sandbox Code Playgroud)

我尝试使用LINQ做了一些事情,并且在进行中并不是那么清楚.

dox.Descendants("Student").Select(d=>d.Value).ToList();
Run Code Online (Sandbox Code Playgroud)

我的数字是2,但价值就像 2dummy12 3dummy11

是否可以将上述XML转换为具有Id,Name和Section Properties的Student类型的通用List?

我可以实现这个的最佳方法是什么?

c# linq xml-parsing

13
推荐指数
2
解决办法
3万
查看次数

Razor 页面中的 BasePageModel

我目前正在使用 Razor Pages 和 Mediatr 将臃肿的 MVC .NET Core 应用程序重构为更简单的 .NET Core 应用程序。

在 MVC 方法中,有一个所有控制器都继承自的 BaseController。BaseController 处理 Mediatr DI。我将如何在 Razor Pages 中执行此操作?创建一个处理 Mediatr DI 的 BasePageModel 类是否明智,或者我应该将 Mediatr DI 包含在我创建的每个 PageModel 中?

c# dependency-injection mediatr asp.net-core razor-pages

7
推荐指数
1
解决办法
3328
查看次数

无法使用SetModelValue修改ModelState

我正在开发MVC / EF Web应用程序。在其中一种形式中,我编辑一个模型。模型有一个像场(public byte[] BioPhoto)

当我将图像上传到该字段并保存数据时,ModelState.IsValidfalse,因为BioPhoto属性null位于ModelState中。请注意,模型中的BioPhoto已加载图像数据。

我试图使用下面的代码将图片注入ModelState,但仍然ModelState.IsValidfalse

public ActionResult Edit([Bind(Include = "BusinessId,Name,About,Phone,TollFree,FAX,Email,Bio,BioPhoto")] Business business)
{
    if (System.IO.File.Exists("image.jpg"))
    {
        business.BioPhoto = System.IO.File.ReadAllBytes("image.jpg");
        ModelState.SetModelValue("BioPhoto", 
                   new ValueProviderResult(business.BioPhoto, "", System.Globalization.CultureInfo.InvariantCulture));
    }

    if (ModelState.IsValid)
    {
        db.Entry(business).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(business);
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么。有没有更好的解决方案来解决这个问题?

我在SO中读了几个答案,但不知道如何解决我的问题。

这是我的模特

public class Business
{
    public int BusinessId { get; set; }

    [Required]
    [StringLength(100)]
    public string Name { get; set; }

    [Required]
    public Address address …
Run Code Online (Sandbox Code Playgroud)

c# model-view-controller asp.net-mvc entity-framework

6
推荐指数
1
解决办法
559
查看次数

在SQL数据库中存储"列表"的最正确方法是什么?

所以,我已经阅读了很多关于如何将多个值存入一列是一个坏主意并违反数据规范化的第一条规则(令人惊讶的是,它不是"不要谈论数据规范化")所以我需要一些帮助.

目前我正在为我工​​作的地方设计ASP .NET网页.我想在网页上显示数据,具体取决于该人所属的Active Directory组.我想到的第一种方法是创建一个表,其中包含一个包含AD组的列,第二列包含属于该列表的计算机列表.

我已经了解到这显然忽略了关系数据库,那么更好的方法是什么呢?我想通过SQL表来控制这种访问,因此我可以在这些表中添加/删除并相应地更改最终用户访问权限.

谢谢您的帮助!:)

编辑:准确描述我想要做的是:

我们有一组需要检查的计算机,但这些计算机在物理上很难到达.我所属的组织为这些计算机启用了远程控制,但是他们不是在提供远程控制密码(可理解).

增加的复杂性是,根据您的身份,我们的客户应该只能看到某组计算机(即他们所在地区拥有的计算机组).所以,如果A组中有Thomas,而B组中有Jones,那么如果你属于任何一个组,那么你只会看到一个条目.但是,如果你属于这两个群体,你应该看到两个在它托马斯和琼斯的电脑.

我认为将这些数据存储在SQL单元中的原因是,将它们存储在表中需要(在我看来)为每个新的"组"计算机创建一个新表.我不想为每个新组创建SQL表,我更倾向于在某个SQL表中添加一行.

这有意义吗?

sql database sql-server database-design

5
推荐指数
2
解决办法
3253
查看次数

TABLOCKX无法正常工作

我正在玩我的SQL Server 2012试图抓住锁.根据我看到的教程,我尝试测试获取表上的独占锁,以便其他任何查询都无法从中读取信息,直到事务未结束,但它只是不起作用.即使它在视频中工作,这是我在第一个窗口中的查询:

use TSQL2012

BEGIN transaction

update tele with (TABLOCKX, holdlock) 
set cor = '12'

waitfor delay '00:05'
go
Run Code Online (Sandbox Code Playgroud)

然后在第二个查询窗口中我尝试了:

select * from tele
Run Code Online (Sandbox Code Playgroud)

它工作得很好,虽然理论上应该有"排他性"锁定防止这种情况.为什么会这样?我也尝试过

set transaction isolation level serializable on
Run Code Online (Sandbox Code Playgroud)

并且没有延迟但选择总是成功的.有任何想法吗?

sql-server table-lock sql-server-2012

5
推荐指数
1
解决办法
533
查看次数

SSIS 脚本任务:如何使用 Dts.Log 记录到输出

我为此搜索了很多,但没有运气。

我有一个脚本任务,在里面我写了一些 C# 代码。我看看,我想像我们看到的那样打印输出Output Window

我正在使用 Dts.Log() 使用以下代码:

Dts.Log("List of files are loaded: ", 0, new byte[0]);
Run Code Online (Sandbox Code Playgroud)

但是我在输出窗口中没有看到任何内容。

如您所见,我已经启用了日志记录:

SSIS 日志配置

我知道如果我使用

Dts.Events.FireInformation
Run Code Online (Sandbox Code Playgroud)

它可以完成这项工作,但我想知道如何将其Dts.Log()用于此目的。

logging ssis script-task

5
推荐指数
1
解决办法
6627
查看次数

NLog 邮件目标不起作用

我正在使用以下配置并希望我的错误日志通过电子邮件发送,但他们没有

<targets>
  <target name="traceLogger" xsi:type="File" fileName="C:\Temp\trace.log" layout="${date:format=G} ${level} ${message}"/>
  <target name="warnLogger" xsi:type="File" fileName="C:\Temp\warning.log" layout="${date:format=G} ${message}"/>
  <target name="infoLogger" xsi:type="File" fileName="C:\Temp\info.log" layout="${date:format=G} ${message}"/>

  <target name="errorLogger" xsi:type="Mail"
        subject="QC Result Processing Error"
        to="name@domain.com"
        bcc=""
        cc=""
        from="sender@domain.com"
        smtpServer="smtpinfo"/>
 </targets>

 <rules>
    <logger name="*" writeTo="traceLogger"></logger>
    <logger name="*" levels="Warn" writeTo="warnLogger"></logger>
    <logger name="*" levels="Info" writeTo="infoLogger"></logger>
    <logger name="*" levels="Error" writeTo="errorLogger"></logger>
 </rules>
Run Code Online (Sandbox Code Playgroud)

nlog

4
推荐指数
1
解决办法
2770
查看次数

实体框架使用 newsequentialid() 作为 Guid Key

使用下面的代码,

public class UserProfile
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    // more properties here
}
Run Code Online (Sandbox Code Playgroud)

我以为 EF 正在使用 newguid(),但是当我检查数据库时,我看到默认值是 newsequentialid()

这是 EF 的默认行为吗?还是因为我使用的是 SQL Server 2017?

c# entity-framework ef-code-first entity-framework-6

4
推荐指数
1
解决办法
2439
查看次数