小编Hei*_*nzi的帖子

SQL Server:非null唯一与主键

假设我有一些T带有一些非空字段的表A.有一个聚集索引A.请考虑以下两个选项:

  1. 我做A了主键.
  2. 我为它创建了一个UNIQUE约束A.

差异在哪里?我知道什么是主键,我知道数据库理论存在概念上的差异.但是SQL Server 的实际区别是什么?SQL Server数据库引擎的行为有何不同?在这两种情况下,表的聚簇索引都是打开的A; 在这两种情况下我都可以A通过外键来引用.

(启发了这个问题的相关问题:Microsoft SQL Server 2008主键的含义)

database sql-server primary-key

3
推荐指数
1
解决办法
645
查看次数

为什么WPF中的BackgroundWorker需要Thread.Sleep来更新UI控件?

namespace WpfApplication1
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
    BackgroundWorker bgWorker;
    Action<int> myProgressReporter;

    public Window1()
    {
        InitializeComponent();
        bgWorker = new BackgroundWorker();
        bgWorker.DoWork += bgWorker_Task;
        bgWorker.RunWorkerCompleted += myWorker_RunWorkerCompleted;

        // hook event to method
        bgWorker.ProgressChanged += bgWorker_ReportProgress;

        // hook the delegate to the method
        myProgressReporter = updateProgress;

        bgWorker.WorkerReportsProgress = true;

    }

    private void myWorker_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
    {
        object result;
        result = e.Result;
        MessageBox.Show(result.ToString());
        progressBar1.Value = 0;
        button1.IsEnabled = true;
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# wpf backgroundworker progress-bar

3
推荐指数
1
解决办法
3761
查看次数

将SqlCommand转换为T-SQL命令

我有一个SqlCommand参数.由于一些外部要求(参见PS),我需要一个T-SQL字符串,即我需要... @parameter ... 替换为... the-value-of-@parameter-encoded-correctly ...(例如O'Brien- > 'O''Brien',02 Mar 2010- > '20100302',3.5- > 3.5).

我知道我可以很容易地在家中酿造这样的解决方案,但正确的转义是棘手的(确保你得到正确的日期和数字格式,注意字符串中的引号等),我想我不是唯一需要这个,所以我的问题是:

是否存在将带参数的SqlCommand转换为嵌入并正确转义参数的单个T-SQL语句的现有解决方案?

PS:我们需要这样做,因为我们需要使用SqlCommandMS Access报告的数据源......并且Access中的"pass-through querydefs"不支持参数化SQL.

PPS:我知道有类似的 问题,但他们都假设SQL Server以某种方式进行了这种转换(@parameter- >一些表示值的转义字符串),所以答案("SQL Server不这样做")不适用这里.我知道SQL Server中没有发生这种转换.

c# vb.net sql-server ado.net

3
推荐指数
1
解决办法
1793
查看次数

使用链接标记(<a>)的href来标识操作

我将标签设置为按钮,并使用它代替<button><input submit>标签.

为了识别操作,我使用href属性,例如:

<a href='update'>Update</a>
<a href='delete'>Delete</a>
Run Code Online (Sandbox Code Playgroud)

然后使用jQuery:$('a [href ="update"]').click(function(){...});

它运作良好.当给定链接充当表单上的提交按钮时,我还使用href属性作为"operation"参数的值.

现在的问题是 - 搜索引擎会因为盲目链接而惩罚我吗?(我认同).
我该如何解决?用#update而代替?我不能使用id属性,因为可能有多个按钮执行相同的操作.

注意:点击处理程序可以使用类连接,这很方便.所以我宁愿不使用id多个按钮连接到同一个处理程序.

<!-- inside a form -->
<a href='update' class='submit-button'>Update</a>

<!-- inside $(function() { .. });
$('a.submit-button').click(function() {
    // 1. get href of the clicked link : href = $(this).attr('href');
    // 2. add <input hidden> to the form: <input type='hidden' name='operation' value='<href>'/>
    // 3. submit form : $(this).parents('form').submit();
});
Run Code Online (Sandbox Code Playgroud)

seo jquery

3
推荐指数
1
解决办法
1889
查看次数

将List <DataRow>转换为C#.net中的List <UserEntity>

我有一个像UserEntity这样的类,如下所示

[Serializable]
[XmlRootAttribute(ElementName = "UsersEntity", IsNullable = false)]
public class UserEntity
{
    [XmlElement(DataType="string",ElementName="UsersID")]
    public int UsersID { get; set; }
    [XmlElement(DataType = "string", ElementName = "UserName")]
    public string UserName { get; set; }
    [XmlElement(DataType = "string", ElementName = "Password")]
    public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我从Db表填充了一个记录作为数据集.然后没有foreach循环我将该数据集转换为List,如下所示

Dataset _ods= new Dataset();  

//create a list of UerEntity class
List<UserEntity> lstUsers=new List<UserEntity>();

// populate record as dataset from DB table
_ods = populateEmpData();

// convert List<DataRow> from Dataset withou Foreach Loop …
Run Code Online (Sandbox Code Playgroud)

c# linq ado.net list

3
推荐指数
1
解决办法
6702
查看次数

asp.net:子控件的 Visible 属性何时自动设置?

示例 1:

<asp:Panel Visible="false" runat="server">
    <asp:TextBox ID="textbox" runat="server" />
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)

在这里,textbox.Visible返回false代码(即使TextBox.Visible没有明确设置;它似乎从其不可见的父级“继承”了该属性)。

示例 2:

<asp:DataGrid ID="grid" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateColumn Visible="False">
            <ItemTemplate>
                <asp:TextBox ID="textbox" runat="server" />
            </ItemTemplate>
        </asp:TemplateColumn>
    </Columns>
    ...
</asp:DataGrid>
Run Code Online (Sandbox Code Playgroud)

在这里,((TextBox)grid.Items[0].FindControl("textbox")).Visible返回true(假设 DataGrid 至少有一行)。


问题:这是设计的不一致行为吗?在这两种情况下,都不会呈现 TextBox,因为某些父元素不可见。

(当然,在第二种情况下,文本框位于模板内,但我不是在模板定义中查询抽象文本框,而是在第 0 行查询特定的具体文本框。)

背景: TextBox 是一个智能控件:它仅在不可见时才将其 Text 属性保存在 ViewState 中。这是有道理的:如果 TextBox 可见,它将呈现为 HTML<input>控件,并且其当前Text值在回发时提交 - 无需通过 ViewState 再次提交。当然,如果 TextBox 不可见,则不会呈现它,因此,对Text属性所做的任何更改都将丢失。

现在,示例 2 给我们带来了一些麻烦。textbox认为它正在被渲染(根据 IL spy,它在 …

asp.net viewstate datagrid textbox

3
推荐指数
1
解决办法
2689
查看次数

有人可以解释我们在Xamarin(mono for android)中编译android代码时生成的文件吗?

当我使用Xamarin(mono for android)在C#中编译我的代码时,我看到在bin/目录中创建了以下5个文件.

  1. SolutionName.SolutionName.apk
  2. SolutionName.SolutionName-Signed.apk
  3. SolutionName.dll(应用程序扩展)
  4. SolutionName.dll.mdb(Microsoft Access数据库)
  5. SolutionName.pdb(程序调试数据库)

有人可以解释这些文件的含义以及是否可以使用这些文件手动部署我的应用程序(不使用Xamarin)?

mono android xamarin

3
推荐指数
1
解决办法
1036
查看次数

如果缺少配置值,我应该抛出什么异常?

我有一个静态类,在其构造函数中从app.config中检索值.这些可能是null,如果是这种情况我想抛出异常.

我想在使用这些值的静态方法中抛出错误,但ArgumentNullException似乎不正确,因为它们不是传递给方法的参数.

有替代方案,还是这不是一个好方法?

c# exception-handling

3
推荐指数
1
解决办法
1415
查看次数

我可以通过在C#中串联字符串和整数常量来创建字符串常量吗?

我知道我可以通过串联其他常量字符串来创建新的常量字符串:

const string a = "A";
const string ab = a + "B";
Run Code Online (Sandbox Code Playgroud)

是否可以基于常量int创建常量字符串?例如,以下内容不会编译:

const int Dpi = 300;
const string DeviceInfo = "<DeviceInfo><Dpi>" + Dpi + "</Dpi></DeviceInfo>";
Run Code Online (Sandbox Code Playgroud)

分配给MyClass.DeviceInfo的表达式必须是常量。

我知道我可以解决这个问题

  1. 制作Dpi一个字符串而不是一个int(并int.Parse在需要int值时添加它),
  2. 添加第二个字符串常量DpiString(因此违反了DRY),或
  3. 制作DeviceInfo一个static readonly字段而不是一个const字段。

我将选择选项3,但是出于好奇,我想知道是否还有其他选项我错过了...

c# const language-lawyer

3
推荐指数
1
解决办法
295
查看次数

什么是 GetFullPath(String, String) 重载?

Path.GetFullPath(String) 方法的文档包含以下文本(重点是我的):

重要的

如果path是相对路径,则此重载返回一个完全限定的路径,该路径可以基于当前驱动器和当前目录。[...] 要返回确定性路径,请调用GetFullPath(String, String)重载。[...]

我检查了文档和 IntelliSense,我只是找不到需要两个参数的 GetFullPath 重载(.net 4.8,完整的经典框架)。这是一个文档错误(也许他们的意思是Path.Combine(String, String)?)还是我错过了什么?

c# base-class-library

3
推荐指数
1
解决办法
253
查看次数