小编Dab*_*rnl的帖子

在Visual Studio 2010中输入.,Backspace和导航键w/Powertools/Resharper

我有这个非常恼人的问题,在Razor Views中,Enter,Backspace和导航键经常不响应.我必须重新启动VS以使其恢复正常.我错过了什么吗?

resharper visual-studio-2010

76
推荐指数
5
解决办法
4万
查看次数

如何从SQLite表中检索最后一个自动增量ID?

我有一个表列消息列ID(主键,自动增量)和内容(文本).
我有一个表用户名列有用户名(主键,文本)和哈希.
一个发件人(用户)向许多收件人(用户)发送邮件,收件人(用户)可以收到许多邮件.
我创建了一个包含两列的表Messages_Recipients:MessageID(引用Messages表的ID列和Recipient(引用Users表中的用户名列).此表表示收件人和邮件之间的多对多关系.

所以,我的问题是这个.在将新消息存储在数据库中之后,将创建新消息的ID.但是,我如何保存对刚刚添加的MessageRow的引用以便检索这个新的MessageID?
我总是可以在数据库中搜索最后添加的行,但是这可能会在多线程环境中返回一个不同的行?

编辑:据我所知,SQLite你可以使用SELECT last_insert_rowid().但是如何从ADO.Net中调用此声明?

我的持久性代码(messages和messagesRecipients是DataTables):

public void Persist(Message message)
{
    pm_databaseDataSet.MessagesRow messagerow;
    messagerow=messages.AddMessagesRow(message.Sender,
                            message.TimeSent.ToFileTime(),
                            message.Content,
                            message.TimeCreated.ToFileTime());
    UpdateMessages();
    var x = messagerow;//I hoped the messagerow would hold a
    //reference to the new row in the Messages table, but it does not.
    foreach (var recipient in message.Recipients)
    {
        var row = messagesRecipients.NewMessages_RecipientsRow();
        row.Recipient = recipient;
        //row.MessageID= How do I find this??
        messagesRecipients.AddMessages_RecipientsRow(row);
        UpdateMessagesRecipients();//method not shown
    } 

}

private void UpdateMessages()
{
    messagesAdapter.Update(messages);
    messagesAdapter.Fill(messages);
}
Run Code Online (Sandbox Code Playgroud)

database sqlite primary-key auto-increment junction-table

72
推荐指数
5
解决办法
10万
查看次数

如何在Visual Studio中的引用代码中设置断点?

我的主要解决方案是使用我自己编写的实用程序类库中的代码,但它是另一个解决方案的一部分.如何在引用的DLL文件中设置断点?

.net debugging breakpoints visual-studio

51
推荐指数
6
解决办法
3万
查看次数

与ID上的.SingleOrDefault相比,DbSet.Find方法非常慢

我有以下代码(数据库是SQL Server Compact 4.0):

Dim competitor=context.Competitors.Find(id)
Run Code Online (Sandbox Code Playgroud)

当我对此进行分析时,Find方法需要300 + ms才能从仅有60条记录的表中检索竞争对手.

当我将代码更改为:

Dim competitor=context.Competitors.SingleOrDefault(function(c) c.ID=id)
Run Code Online (Sandbox Code Playgroud)

然后在3毫秒内找到竞争对手.

竞争者类:

Public Class Competitor
    Implements IEquatable(Of Competitor)

    Public Sub New()
        CompetitionSubscriptions = New List(Of CompetitionSubscription)
        OpponentMeetings = New List(Of Meeting)
        GUID = GUID.NewGuid
    End Sub

    Public Sub New(name As String)
        Me.New()
        Me.Name = name
    End Sub

    'ID'
    Public Property ID As Long
    Public Property GUID As Guid

    'NATIVE PROPERTIES'
    Public Property Name As String

    'NAVIGATION PROPERTIES'
    Public Overridable Property CompetitionSubscriptions As ICollection(Of CompetitionSubscription)
    Public Overridable Property …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first sql-server-ce-4 dbcontext dbset

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

在C#中匹配换行符(\n)的正则表达式

好吧,这个让我疯了......我有一个字符串,这样就形成了:

var newContent = string.Format("({0})\n{1}", stripped_content, reply)
Run Code Online (Sandbox Code Playgroud)

newContent将显示如下:(
旧文本)
新文本

我需要一个正则表达式,用括号括起来的括号中的文本和换行符.

我能想到的最好的是:

const string  regex = @"^(\(.*\)\s)?(?<capture>.*)";
var match= Regex.Match(original_content, regex);
var stripped_content = match.Groups["capture"].Value;
Run Code Online (Sandbox Code Playgroud)

这工作,但我想专门匹配换行符(\n),没有任何空格(\s)替换\s\n \\n\\\n无法正常工作.

请帮我保持理智!

编辑:一个例子:

public string Reply(string old,string neww)
        {
            const string  regex = @"^(\(.*\)\s)?(?<capture>.*)";
            var match= Regex.Match(old, regex);
            var stripped_content = match.Groups["capture"].Value;
            var result= string.Format("({0})\n{1}", stripped_content, neww);
            return result;
        }

Reply("(messageOne)\nmessageTwo","messageThree") returns :
(messageTwo)
messageThree
Run Code Online (Sandbox Code Playgroud)

.net c# regex

33
推荐指数
3
解决办法
7万
查看次数

为什么在实体框架6中仍未实现ON DELETE SET NULL?有障碍吗?

仍然无法首先使用实体​​框架代码配置与ON DELETE SET NULL规则的关系.作为一种解决方法,您必须在内存中加载所有相关实体,然后在删除父实体时,EF将发出SQL命令以将其外键设置为Null.

这一点,虽然使用类似的东西自己实现这一点是微不足道的:

protected override void Seed(Context context)
{
    context.Database.ExecuteSqlCommand("ALTER TABLE dbo.Guests DROP CONSTRAINT Guest_PreferredLanguage");
    context.Database.ExecuteSqlCommand("ALTER TABLE dbo.Guests ADD CONSTRAINT Guest_PreferredLanguage FOREIGN KEY (LanguageID) REFERENCES dbo.Languages(LanguageID) ON UPDATE NO ACTION ON DELETE SET NULL");
}
Run Code Online (Sandbox Code Playgroud)

(例子来自这篇文章.)

我可以看到这种方法没有问题:加载的子实体将与数据库保持同步,因为EF将更新(设置为null)其外键和引用属性,并且数据库中的其他记录受到影响不会有任何危害,因为它们具有反正没装好.

那么,为什么这个功能仍然缺失呢?有一些隐藏的障碍吗?

entity-framework ef-code-first entity-framework-6

33
推荐指数
1
解决办法
4803
查看次数

无法比较数组中的两个元素

我有一个List<T>地方T是暴露了"用户名"属性的类.用户名是封装字符串的自定义类型.我IComparable<T>在这个简单返回的自定义类型上实现了接口

this.encapsulatedString.CompareTo(other.encapsulatedString)
Run Code Online (Sandbox Code Playgroud)

我这样定义了一个ICollectionViewList:

AllUsers=CollectionViewSource.GetDefaultView(myList);
Run Code Online (Sandbox Code Playgroud)

我添加了Sortdescription:

AllUsers.SortDescriptions.Add(new SortDescription("Username",ListSortDirection.Ascending));
Run Code Online (Sandbox Code Playgroud)

在这一行,代码抛出标题中声明的异常.我可以通过其他方式排序列表没有问题.异常来自哪里?

.net sorting exception

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

如何防止新的WPF表格被盗?

我编写了一个简单的MSN风格的程序,它将使用WCF发送和检索消息.主窗体包含一个文本框,用于键入要发送的消息.在后台,应用程序每隔几秒钟轮询一次服务器以获取新消息.收到新消息时,将打开一个新窗口以显示该消息.这必须使用Dispatcher类在UI线程上完成.

问题是当显示新窗口时,焦点会从TextBox移开,因此打字会中断.这很烦人!在MSN Messenger中,可以在接收消息时继续键入您自己的消息.怎么做?

作为一种解决方法,我在TextBox具有焦点的同时推迟弹出新消息,但应该有更好的方法!

.net wpf multithreading focus

23
推荐指数
1
解决办法
9199
查看次数

你是如何处理VB6中缺少构造函数的?

VB6类没有参数化构造函数.你为此选择了什么解决方案?使用工厂方法似乎是明显的选择,但让我感到惊讶!

vb6 constructor class

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

无法确定"System.Data.SQLite.SQLiteFactory"类型的提供程序工厂的提供程序名称.使用Nuget包版本1.0.94.1

我在SQLite 1.0.94.1的Nuget包中遇到此错误.我对各种app.config部分进行了调整,有关此软件包以前版本的类似问题的帮助,但我无法使用它.下面是我在安装Nuget包后找到的app.config.我在安装之前删除了app.config.之后我才添加了连接字符串.

那么,问题出在哪里?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <!--Added by me, the rest of the app.config was constructed by installing the SQLite package -->
  <connectionStrings>
    <add name="PrivateMessengerContext"  connectionString="DataSource=|DataDirectory|\PrivateMessengerDb.db" providerName="System.Data.SQLite.EF6"/>
    <add name="PasswordContext" connectionString="DataSource=|DataDirectory|\PasswordDb.db" providerName="System.Data.SQLite.EF6"/>
  </connectionStrings>
  <system.data>
    <!--
        NOTE: The extra "remove" element below is to prevent the design-time
          support components within EF6 from selecting the legacy ADO.NET
          provider for SQLite (i.e. the one without any EF6 support).  It
          appears to only …
Run Code Online (Sandbox Code Playgroud)

.net sqlite entity-framework-6

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