小编chr*_*igo的帖子

如何在Visual Studio 2017项目中启用C#7的所有功能?

Visual Studio 2017发布后,我想尝试使用新的C#7功能创建简单的控制台项目.我希望我只需下载新的Visual Studio 2017,然后创建新的控制台项目,并可以使用新的C#7功能.但我不能.

如果我安装NuGet包System.ValueTuple,我可以使用一些功能,如元组.

但对于其他功能,我不知道我需要做什么.例如这个NuGet问题.

我现在需要做所有这些脏安装吗?或者我可以用更简单的方式启用c#7功能?

c# visual-studio c#-7.0 visual-studio-2017

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

如何提高这种算法的性能?

我有一个100000对的文本文件:单词和频率.

test.in文件包含单词:

  • 1行 - 所有字频对的总数
  • 2行~100 001 - 字频对
  • 100 002行 - 用户输入字的总数
  • 从100 003到最后 - 用户输入的单词

我解析这个文件并把文字放进去

Dictionary<string,double> dictionary;
Run Code Online (Sandbox Code Playgroud)

我想在以下代码中执行一些搜索+命令逻辑:

for(int i=0;i<15000;i++)
{
    tempInputWord = //take data from file(or other sources)

    var adviceWords = dictionary
                .Where(p => p.Key.StartsWith(searchWord, StringComparison.Ordinal))
                .OrderByDescending(ks => ks.Value)
                .ThenBy(ks => ks.Key,StringComparer.Ordinal)
                .Take(10)
                .ToList();

    //some output
}
Run Code Online (Sandbox Code Playgroud)

问题:此代码必须在不到10秒的时间内运行.

在我的计算机(核心i5 2400,8gb RAM)上使用Parallel.For() - 大约91秒.

你能给我一些如何提高性能的建议吗?

更新:

万岁!我们做到了!谢谢@CodesInChaos,@ usr,@ T_D以及参与解决问题的所有人.

最终代码:

var kvList = dictionary.OrderBy(ks => ks.Key, StringComparer.Ordinal).ToList();

var strComparer = new MyStringComparer();
var intComparer = …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing performance dictionary

10
推荐指数
2
解决办法
1498
查看次数

实体框架多个上下文和Microsoft Azure.如何更新数据库?

我有ASP.NET MVC 5解决方案,里面有大约4个项目.+ EF代码优先阅读本文后,
我尝试将应用程序EF上下文(asp.net身份)与我的模型上下文分开.(​​单个数据库中的两个上下文)

现在我有2个项目具有不同的上下文.

//main project
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("MyDB")
    {
    }
}
//another project
public class DALDbContext : DbContext
{
    public DALDbContext()
        : base("MyDB")
    {
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样更新数据库:

update-database -ProjectName:myProject.WEB

update-database -ProjectName:myProject.DAL

(在网上我有asp.net身份)

如果我将从Azure中的VisualStudio发布此解决方案,我可以检查"执行代码优先迁移(在应用程序启动时运行)".

在此输入图像描述

但如果我理解正确,它将只相当于一个命令:

update-database -ProjectName:myProject.WEB

因为它是默认项目.

我不明白如何运行这两个命令.另一方面,我试图分别执行这两个命令.我在"程序包管理器控制台"中写了类似的东西:

Update-Database -ConnectionString "Server=tcp:<server_name>.database.windows.net,1433;Database=<database_name>;User ID=<db_user_name>@<server_name>;Password=<password>;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;Max Pool Size=100;" -ConnectionProviderName "System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)

但我得到错误:"ConnectionString属性尚未初始化."

或者可能尝试从另一个种子方法运行...(但我认为它变化很糟糕)

最后 - 2个问题:

  1. 将一个上下文与另一个上下文分开是一个好主意吗?
  2. 如何在azure上运行这种种子方法?(或你的变种)

c# asp.net entity-framework azure ef-migrations

7
推荐指数
1
解决办法
1273
查看次数

如何在ASP.NET标识中创建不同的用户类型?

我是网络开发的新手.现在我用ASP.NET Identity学习ASP.NET MVC 5.在我的情况下你能给我一些建议吗:

在我的网站中,我希望有一些类型的用户.例如:买方卖方

他们每个人都可以登录并控制他的部分信息.(例如买家可以更改他的信息,添加请求.卖家也可以更改自己的信息并添加商品)

现在,我创建这样的东西:

using Microsoft.AspNet.Identity.EntityFramework;
using System.Data.Entity;

public class ApplicationUser : IdentityUser
{
    public int? BuyerId { get; set; }
    public int? SellerId { get; set; }

    public virtual Buyer Buyer { get; set; }
    public virtual Seller Seller { get; set; }
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

当我们创建用户时,他会获得一些信息的角色和属性(例如,如果是买方,他将拥有角色"买方"和一些买方财产(并且卖方将为空).

这是正常的做法吗?

更新:

我想我选择了一个不好的例子(卖方和买方).在我的情况下,我有一些像recomendation系统(另一个例子):

  1. 第一类用户,可以添加关于他自己的信息并找到一些项目(例如水果)
  2. 第二类用户,添加此项目(附加信息)(例如苹果,梨,葡萄.其他(第二类用户)添加蔬菜)
  3. 最后一类用户,可以添加一些其他信息(例如城市)

系统可以基于关于用户的附加信息(例如,最近的经验等)和项目(例如种类,成本等)来确定用户的偏好(一些蔬菜或水果).

c# asp.net asp.net-mvc entity-framework asp.net-identity

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