我在桌子下面
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)
但它没有给我预期的结果
我正在寻找.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) 我正在尝试将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?
我可以实现这个的最佳方法是什么?
我目前正在使用 Razor Pages 和 Mediatr 将臃肿的 MVC .NET Core 应用程序重构为更简单的 .NET Core 应用程序。
在 MVC 方法中,有一个所有控制器都继承自的 BaseController。BaseController 处理 Mediatr DI。我将如何在 Razor Pages 中执行此操作?创建一个处理 Mediatr DI 的 BasePageModel 类是否明智,或者我应该将 Mediatr DI 包含在我创建的每个 PageModel 中?
我正在开发MVC / EF Web应用程序。在其中一种形式中,我编辑一个模型。模型有一个像场(public byte[] BioPhoto)
当我将图像上传到该字段并保存数据时,ModelState.IsValid是false,因为BioPhoto属性null位于ModelState中。请注意,模型中的BioPhoto已加载图像数据。
我试图使用下面的代码将图片注入ModelState,但仍然ModelState.IsValid是false
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) 所以,我已经阅读了很多关于如何将多个值存入一列是一个坏主意并违反数据规范化的第一条规则(令人惊讶的是,它不是"不要谈论数据规范化")所以我需要一些帮助.
目前我正在为我工作的地方设计ASP .NET网页.我想在网页上显示数据,具体取决于该人所属的Active Directory组.我想到的第一种方法是创建一个表,其中包含一个包含AD组的列,第二列包含属于该列表的计算机列表.
我已经了解到这显然忽略了关系数据库,那么更好的方法是什么呢?我想通过SQL表来控制这种访问,因此我可以在这些表中添加/删除并相应地更改最终用户访问权限.
谢谢您的帮助!:)
编辑:准确描述我想要做的是:
我们有一组需要检查的计算机,但这些计算机在物理上很难到达.我所属的组织为这些计算机启用了远程控制,但是他们不是在提供远程控制密码(可理解).
增加的复杂性是,根据您的身份,我们的客户应该只能看到某组计算机(即他们所在地区拥有的计算机组).所以,如果A组中有Thomas,而B组中有Jones,那么如果你属于任何一个组,那么你只会看到一个条目.但是,如果你属于这两个群体,你应该看到两个在它托马斯和琼斯的电脑.
我认为将这些数据存储在SQL单元中的原因是,将它们存储在表中需要(在我看来)为每个新的"组"计算机创建一个新表.我不想为每个新组创建SQL表,我更倾向于在某个SQL表中添加一行.
这有意义吗?
我正在玩我的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)
并且没有延迟但选择总是成功的.有任何想法吗?
我为此搜索了很多,但没有运气。
我有一个脚本任务,在里面我写了一些 C# 代码。我看看,我想像我们看到的那样打印输出Output Window
我正在使用 Dts.Log() 使用以下代码:
Dts.Log("List of files are loaded: ", 0, new byte[0]);
Run Code Online (Sandbox Code Playgroud)
但是我在输出窗口中没有看到任何内容。
如您所见,我已经启用了日志记录:
我知道如果我使用
Dts.Events.FireInformation
Run Code Online (Sandbox Code Playgroud)
它可以完成这项工作,但我想知道如何将其Dts.Log()用于此目的。
我正在使用以下配置并希望我的错误日志通过电子邮件发送,但他们没有
<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) 使用下面的代码,
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# ×5
sql-server ×3
ado.net ×1
aggregation ×1
asp.net-core ×1
asp.net-mvc ×1
database ×1
linq ×1
logging ×1
mediatr ×1
nlog ×1
razor-pages ×1
script-task ×1
sql ×1
ssis ×1
system.data ×1
t-sql ×1
table-lock ×1
xml-parsing ×1