小编Adr*_*ian的帖子

添加具有初始(但不是默认)值的新列的最佳方法?

我需要使用初始值向MS SQL 2005数据库添加新列.但是,我不想在此列上自动创建默认约束.在我添加列的时间点,默认/初始值是正确的,但这可能会随着时间而改变.因此,将来对表的访问必须指定一个值而不是接受默认值.

我能想到的最好的是:

ALTER TABLE tbl ADD col INTEGER NULL
UPDATE tbl SET col = 1
ALTER TABLE tbl ALTER COLUMN col INTEGER NOT NULL
Run Code Online (Sandbox Code Playgroud)

对于较大的表(100,000到1,000,000条记录)来说,这似乎有点低效.

我已尝试使用默认值添加列,然后删除默认约束.但是,我不知道默认约束的名称是什么,而不是访问sysobjects并放入数据库特定的知识.

请,必须有更好的方法.

sql database sql-server alter-table

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

确定Windows 8 Style(Metro)应用程序何时处于后台或失去焦点时

每当用户移动到另一个应用程序时,我都会想要暂停一个游戏.例如,当选择超级按钮菜单时,用户将Windows键,alt-tab按到另一个应用程序,单击另一个应用程序或任何其他会使应用程序失去焦点的应用程序.

当然这应该是微不足道的!我只有一个Page和一个Canvas,我已经尝试GotFocusLostFocus事件Canvas,但他们不开火.

我来最接近的是使用PointerCaptureLostCoreWindow捕捉指针之后.当选择了超级按钮菜单时,这适用于应用程序切换,但是当按下Windows键时这不起作用.

编辑:

在下面的Chris Bowen的帮助下,最终的"解决方案"如下:

public MainPage() {
    this.InitializeComponent();
    CapturePointer();
    Window.Current.CoreWindow.PointerCaptureLost += PointerCaptureLost;
    Window.Current.CoreWindow.PointerPressed += PointerPressed;
    Window.Current.VisibilityChanged += VisibilityChanged;
}

private void VisibilityChanged(object sender, VisibilityChangedEventArgs e) {
    if(e.Visible) {
        CapturePointer();
    }
    else {
        Pause();
    }
}

void PointerPressed(CoreWindow sender, PointerEventArgs args) {
    CapturePointer();
}

private void CapturePointer() {
    if(hasCapture == false) {
        Window.Current.CoreWindow.SetPointerCapture();
        hasCapture = true;
    }
}

void PointerCaptureLost(CoreWindow sender, PointerEventArgs args) {
    hasCapture …
Run Code Online (Sandbox Code Playgroud)

c# focus microsoft-metro windows-8

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

为什么在Equals方法中忽略了Uri的片段?

我正在尝试根据URI来维护对象集合:

public class ConceptCollection : KeyedCollection<Uri, Concept> {
    protected override Uri GetKeyForItem(Concept item) {
        return item.Uri;
    } 
}
Run Code Online (Sandbox Code Playgroud)

但是,URI通常仅根据Uri的片段而不同.因此,以下会导致错误:

ConceptCollection wines = new ConceptCollection();
Concept red = new Concept("http://www.w3.org/2002/07/owl#RedWine");
Concept white = new Concept("http://www.w3.org/2002/07/owl#WhiteWine");
wines.Add(red);
wines.Add(white); // Error: An item with the same key has already been added.
Run Code Online (Sandbox Code Playgroud)

根据http://msdn.microsoft.com/en-us/library/f83xtf15.aspx:

Equals方法比较两个实例,而不考虑它们可能包含的用户信息(UserInfo)和片段(Fragment)部分.例如,给定URI http://www.contoso.com/index.htm#searchhttp:// user:password@ www.contoso.com/ index.htm,Equals方法将返回true.

我已经辞职了,不得不破解这个.但为什么它会这样呢?我可以看到用户信息的逻辑,但不能看到片段.

c# uri

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

编写单元测试用于持久数据创建和删除

在为持久存储的数据编写测试时,我想出了一个测试:

[TestMethod]
public void DoCreateDeleteTest() {
    PersistentDataStore pds = new PersistentDataStore();
    bool createSuccess = pds.Save("id", "payload");
    Assert.AreEqual(true, createSuccess);
    bool deleteSuccess = pds.Delete("id");
    Assert.AreEqual(true, deleteSuccess);
}
Run Code Online (Sandbox Code Playgroud)

只要一切正常,这似乎很好.该函数没有先前的依赖关系,它会自行清理.问题是:当.Save()方法执行保存但返回false/failure时.断言触发并且不调用删除,因此它不会自行清理.

在此之后,数据库中存在名为"id"的持久数据,并且所有将来的保存都将失败.

我能想到解决它的唯一方法是在保存之前进行预防性删除,但这似乎是一种大规模的破解方式.

c# database unit-testing

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

什么,如果有的话,技术将取代ASP.NET?

WinForms已经让位于WPF和MVVM之类的新模型,它们更好地支持测试驱动开发,与WPF一起工作得非常好.此外,在我看来,ASP.NET与WinForms的处理方式非常接近,例如代码隐藏中的事件处理程序,它使用继承或部分类进行链接.使用WPF和MVVM,这种机制不再受欢迎,数据绑定用于进一步将用户界面分离到仅仅是皮肤的位置.

所以,我敢打赌,微软正在构建类似于WPF启发,基于XAML的ASP.NET替代品.也就是说,用XAML编写的HTML页面视图使它们可以利用绑定,但在运行时将呈现基于标准的HTML.但是,我在网上找不到任何参考资料.(在CodePlex上有一篇ASP.NET MVVM文章,但是那里的绑定看起来非常简单.)

这不是一个社区维基问题,我真的想知道微软正在做什么.但是,我猜我无法阻止这种猜测(我已经做了一些).

编辑:指向Silverlight的相当多的回复已经通过.我本来应该更明确.和Silverlight一样酷,我真的在寻找可以在LOB应用程序中使用的标准兼容技术.

asp.net wpf mvvm

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