小编Sam*_*mWM的帖子

返回受UPDATE语句影响的行数

如何在存储过程(SQL Server 2005)中获取受UPDATE查询影响的行数作为结果集.例如

CREATE PROCEDURE UpdateTables
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    UPDATE Table1 Set Column = 0 WHERE Column IS NULL
    UPDATE Table2 Set Column = 0 WHERE Column IS NULL
    UPDATE Table3 Set Column = 0 WHERE Column IS NULL
    UPDATE Table4 Set Column = 0 WHERE Column IS NULL
END
Run Code Online (Sandbox Code Playgroud)

然后返回:

Table1    Table2    Table3    Table4
32        45        0         3
Run Code Online (Sandbox Code Playgroud)

sql sql-server

83
推荐指数
3
解决办法
19万
查看次数

如何创建自定义数据注释验证器

想要创建自定义数据注释验证.有关如何创建它们的有用指南/示例吗?

首先:
具有最小和最大长度的StringLength.我知道.NET 4可以做到这一点,但是想在.NET 3.5中做同样的事情,如果可能的话,只能定义最小长度(至少x个字符),最大长度(最多x个字符),或者两者都是(在x和y之间).

其次:
使用模数运算验证 - 如果数字是有效长度,我希望使用模数11算法进行验证(我已经在JavaScript中实现了它,所以我想它只是一个简单的移植?)

更新:
解决了第二个问题,只是复制JavaScript实现并进行一些调整,所以不需要解决方案.

asp.net data-annotations asp.net-mvc-2

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

从Management Studio隐藏SQL数据库

如何在登录时隐藏您没有访问权限的数据库SQL Server 2005 / 2008

目前,如果用户连接,他们会看到服务器上的所有数据库,这意味着他们必须扫描列表才能找到他们的数据库.

sql-server

38
推荐指数
3
解决办法
4万
查看次数

截断包含HTML的文本,忽略标记

我想截断一些文本(从数据库或文本文件加载),但它包含HTML,因此包含标记,将返回更少的文本.这可能导致标签未被关闭或部分关闭(因此整洁可能无法正常工作且内容仍然较少).如何根据文本进行截断(当你到达表时可能会停止,因为这可能会导致更复杂的问题).

substr("Hello, my <strong>name</strong> is <em>Sam</em>. I&acute;m a web developer.",0,26)."..."
Run Code Online (Sandbox Code Playgroud)

会导致:

Hello, my <strong>name</st...
Run Code Online (Sandbox Code Playgroud)

我想要的是:

Hello, my <strong>name</strong> is <em>Sam</em>. I&acute;m...
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

虽然我的问题是如何在PHP中完成它,但是知道如何在C#中执行它会很好...或者应该没问题,因为我认为我可以将方法移植过来(除非它是内置的方法).

另请注意,我已经包含了一个HTML实体&acute;- 必须将其视为单个字符(而不是本示例中的7个字符).

strip_tags 是一个后备,但我会失去格式和链接,它仍然会有HTML实体的问题.

html php string markup

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

将DataTable转换为CSV流

目前有一个DataTable,但希望通过WebHandler将其流式传输给用户.FileHelpersCommonEngine.DataTableToCsv(dt, "file.csv").但是它会将其保存到文件中.如何将其保存到流中呢?当我知道高级列或它们没有改变时,我知道如何做到这一点,但我想直接从数据表生成列标题.

如果我知道列,我只是创建类:

[DelimitedRecord(",")]
public class MailMergeFields
{
    [FieldQuoted()]
    public string FirstName;
    [FieldQuoted()]
    public string LastName;
}
Run Code Online (Sandbox Code Playgroud)

然后使用FileHelperEngine并添加记录:

FileHelperEngine engine = new FileHelperEngine(typeof(MailMergeFields));

MailMergeFields[] merge = new MailMergeFields[dt.Rows.Count + 1];

// add headers
merge[0] = new MailMergeFields();
merge[0].FirstName = "FirstName";
merge[0].LastName = "LastName";

int i = 1;              
// add records
foreach (DataRow dr in dt.Rows)
{
    merge[i] = new MailMergeFields();
    merge[i].FirstName = dr["Forename"];
    merge[i].LastName = dr["Surname"];
    i++;
}
Run Code Online (Sandbox Code Playgroud)

最后写入一个流:

TextWriter writer = new StringWriter();
engine.WriteStream(writer, merge); …
Run Code Online (Sandbox Code Playgroud)

c# csv datatable

29
推荐指数
2
解决办法
11万
查看次数

使用集成Windows身份验证时以其他用户身份登录

我通过使用集成Windows身份验证和关闭匿名访问来限制对站点的访问.这样我就可以向他们展示他们的真实姓名(从查看Active Directory并使用服务器变量LOGON_USER)并执行其他相关的Active Directory任务.

然后,我如何通过"以其他用户身份登录"链接再次提示他们的用户凭据,显示浏览器提示(就像您可以使用Chrome或Firefox等浏览器,或者该网站不在"Intranet"中) IE中的区域而不是Web表单?

由于SharePoint提供此功能,我假设有一种方法可以通过代码执行此操作,但我不知道哪些代码可以执行此操作(使用C#).我可以发送一个401标题,使提示出现,但是你如何确认他们是否登录?

c# asp.net windows-authentication

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

资产的HTML5 localStorage(样式表,JavaScript,图像等)

为了节省客户端下载时间和网络使用,是否可以使用HTML5的localStorage功能来存储链接样式表,javascript文件和二进制数据(例如图像)的内容,而不是每次都能点击服务器?

这会让事情变得复杂 - 因为我认为你必须通过JavaScript而不仅仅是一个scriptlink元素来添加链接资产,为那些没有启用JavaScript的人打破页面?除非您可以HEAD在浏览器下载内容之前解析内容(使用请求检查上次修改日期和其他标题).

或者最好只是坚持304 Not ModifiedeTag标题?

html5 local-storage

11
推荐指数
1
解决办法
8164
查看次数

将Stream反序列化为List <T>或任何其他类型

尝试将流反序列化为List<T>(或任何其他类型)并且因错误而失败:

Foo.Deserialize<T>(System.IO.Stream)无法从用法中推断出方法的类型参数.尝试显式指定类型参数.

这失败了:

public static T Deserialize<T>(this Stream stream)
{
    BinaryFormatter bin = new BinaryFormatter();
    return (T)bin.Deserialize(stream);
}
Run Code Online (Sandbox Code Playgroud)

但这有效:

public static List<MyClass.MyStruct> Deserialize(this Stream stream)
{
    BinaryFormatter bin = new BinaryFormatter();
    return (List<MyClass.MyStruct>)bin.Deserialize(stream);
}
Run Code Online (Sandbox Code Playgroud)

要么:

public static object Deserialize(this Stream stream)
{
    BinaryFormatter bin = new BinaryFormatter();
    return bin.Deserialize(stream);
}
Run Code Online (Sandbox Code Playgroud)

没有铸造是否可以做到这一点,例如(List<MyStruct>)stream.Deserialize()

更新:
使用stream.Deserialize<List<MyClass.MyStruct>>()错误结果:

System.InvalidCastException: Unable to cast object of type 'System.RuntimeType'
to type 'System.Collections.Generic.List`1[MyClass+MyStruct]'.
at StreamExtensions.Deserialize[T](Stream stream)
at MyClass.RunSnippet()
Run Code Online (Sandbox Code Playgroud)

更新2(示例控制台应用程序) - 运行一次以创建文件,再次从中读取

using …
Run Code Online (Sandbox Code Playgroud)

c# generics extension-methods

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

ASP.NET MVC动态添加子记录

使用实体数据框架,我有一个被定义的模型Client,它只包含一个id和一个名字.然后,我与另一个名为Appointment包含id和日期的模型有关联.

对于表单,我希望允许用户创建一个新客户端,并在同一表单上添加约会(在创建客户端之前).我有部分工作(增加一个约会).

在控制器中:

[HttpPost]
public ActionResult Create(Client client)
{
    var appointment = new Appointment();
    UpdateModel(appointment);
    client.Appointments.Add(appointment);
    db.AddToClients(client);
    db.SaveChanges();
    return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)

在视图中:

<div class="editor-label">
    <%= Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
    <%= Html.TextBoxFor(model => model.Name) %>
    <%= Html.ValidationMessageFor(model => model.Name) %>
</div>
<% Html.RenderPartial("Appointment", new Appointment()); %>
Run Code Online (Sandbox Code Playgroud)

'部分'观点:

<div class="editor-label">
    <%= Html.LabelFor(model => model.AppointmentDate) %>
</div>
<div class="editor-field">
    <%= Html.TextBoxFor(model => model.AppointmentDate) %>
    <%= Html.ValidationMessageFor(model => model.AppointmentDate) %>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,由于以下几个原因,这并不理想:

  1. 只能添加一个约会
  2. 如果存在任何名称冲突(例如,Comments在两个Client …

asp.net-mvc entity-framework

9
推荐指数
1
解决办法
5174
查看次数

如何使用其他参数更新Linq表达式?

我有一个Linq表达式,可能会根据某些条件进行更改.我想做的一个例子(留空一点我不确定):

Expression<Func<Project, bool>> filter = (Project p) => p.UserName == "Bob";
if(showArchived)
{
    // update filter to add && p.Archived
}
// query the database when the filter is built
IEnumerable<Project> projects = unitOfWork.ProjectRepository.Get(filter);
Run Code Online (Sandbox Code Playgroud)

如何更新过滤器以添加任何额外参数?

在检索所有记录时,我使用a Where来进一步过滤结果.但是,这导致对数据库的查询多于严格必要的查询.

IEnumerable<Project> projects = unitOfWork.ProjectRepository.Get(filter);
if(showArchived)
{
    projects = projects.Where(p => p.Archived);
}
Run Code Online (Sandbox Code Playgroud)

Get方法使用GenericRepository模式:

public class GenericRepository<TEntity> where TEntity : class
{
    internal ProgrammeDBContext context;
    internal DbSet<TEntity> dbSet;

    public GenericRepository(ProgrammeDBContext context)
    {
        this.context = context;
        this.dbSet = context.Set<TEntity>();
    }

    public virtual IEnumerable<TEntity> Get( …
Run Code Online (Sandbox Code Playgroud)

c# linq

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