小编Ron*_*dau的帖子

向我推荐一个合适的LINQ提供程序(SQL服务器,复杂查询)

我一直在使用LINQ to SQL和实体一段时间,我对它们总体上非常满意.但是,我知道它们的局限性,特别是对我来说这是一个很大的问题.当您以形式执行复杂的嵌套查询时

MyContext.SomeTable
.Select(item=>new{
    item.SomeProperty1,
    item.SomeProperty2,
    item.NavigationProperty1
        .Select(nav1=> new {// retrieve some properties}), // This triggers a single query as long as don't have more than one subquery
    item.NavigationProperty2
        .Select(nav2=> new {// retrieve some properties}) // This triggers one query PER ROW in the original query
});
Run Code Online (Sandbox Code Playgroud)

我测试过的提供程序是LINQ TO SQL/LINQ TO实体(更糟糕的是,启动LINQConnect,情况更糟,在第一个导航属性上每行生成1个)

我现在得到的是什么(伪代码):

select t1.a,t1.b,t2.c,t2.d from mytable as t1
join navproperty1table as t2
Run Code Online (Sandbox Code Playgroud)

和这样的查询中有1百万(如果第一组中有100万个结果):( select t3.e,t3.f from navproperty2table as t3 where id = XX将X查询更改为第一个查询返回的下一个元素)

我想要的是:

select t1.a,t1.b,t2.c,t2.d,t3.e,t3.f from mytable …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities sql-server-2008 linq-to-sql c#-4.0

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

如何像签署程序集一样签署 ZIP 文件?

我有一个包含签名的 .Net 程序集的 ZIP 文件,是否可以通过一个工具来签名而不是代码,而是一个包含这些程序集的 ZIP 文件?我希望能够在代码方面处理这个问题,比如:

if(myzipfile.IsSignedBy(name))
{
    DezipFile();
    LoadAssemblies();
}
Run Code Online (Sandbox Code Playgroud)

.net c# assemblies signing

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

我如何在“即点即用”安装上执行 Office 互操作?

我有一个 .net 应用程序,它与 office 进行大量互操作(今天使用 excel,明天使用整个办公套件),我非常担心 2013 年只有 CTR(批量许可证除外)。

我在 2013 年关注了 Google 同步惨败并继续阅读它需要重新构建整个架构以支持 CTR 安装,但我“非常愿意”这样做,我似乎无法找到任何有关此的信息,但是有人知道吗如何与 CTR Office 2010 / 2013 实际互操作?

我不是在寻找获得非 CTR 版本的方法,我想以一种我可以原生支持两者的方式进行编程,而不是给我的客户带来切换版本的负担(他们无论如何都不会)。我也不是编程插件(托管内部应用程序),而是需要能够与办公套件互操作的外部 .net 应用程序,就像我到目前为止使用 excel 互操作所做的那样(能够检索正在运行的实例并回收它们或开始新的实例并访问互操作 API 公开的所有内容)。

因此,由于我愿意从头开始重新启动我的项目,但不能对我的客户强加特定的 office 安装(媒体和非默认选项),那么与 office 2013 CTR 互操作的适当方法是什么?这种适当的方式也适用于非 CTR 版本还是我需要 2 个代码路径?任何帮助都是最受欢迎的,因为如果我找不到解决方案,我的程序就像死了一样。

.net interop ms-office office-interop office-2013

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

EF Core 2.2,拥有的实体在层次结构中有多个时生成为另一个表

我有一个带有Address标记的类[Owned]和人员层次结构的模型(人员、客户或员工,然后是更多的子类型等)。此层次结构的不同阶段有地址,并且所有地址最终都在一个表中,因为 EF Core 仅限于每个层次结构的表。我希望 address 中的所有属性在那个 person 表中出现多次(在任何子类型中每次提及一次)但是它根本没有出现!相反,我看到每个人的 FK 和一个单独的地址表。

EF Core 是否不支持同一类型的多个拥有成员?如果没有,我应该做什么?我没有任何可能干扰默认值的流畅 API/特定配置(新的空控制台项目,只有配置行是 .UseSQLServer(connectionstring)

示例代码如下:

public class SampleContext : DbContext
{
    public virtual DbSet<Address> Addresses { get; set; }
    public virtual DbSet<Customer> Customers { get; set; }
    public virtual DbSet<Employee> Employees { get; set; }
    public virtual DbSet<Person> Persons { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("my connection string here");
        }
        base.OnConfiguring(optionsBuilder);
    }
}
[Owned]
public class Address
{ …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core asp.net-core owned-types

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

切换到 .net core 3 端点路由后,身份 UI 不再有效

在很难让我的区域显示端点路由后,我设法在这个自我回答的线程中修复了它(尽管不是以非常令人满意的方式):从 2.2 迁移到 3.0 后出现问题,默认工作但无法访问区域,无论如何要调试端点解析?

然而,Identity UI 根本没有显示,我在挑战时被重定向到正确的 url,但页面是空白的。我添加了身份 UI 块包,并且从 mvc 路由更改为端点路由,我没有更改任何应该破坏它的内容。

即使我像在 hack 中那样添加路由,我似乎也没有做与默认项目所做的事情和身份在那里工作的事情有多大不同。

通常问题隐藏在线路周围而不是在线上,我发布了我的整个启动文件。

常规(默认)控制器工作。管理区域工作(其中一个页面没有身份验证,我可以访问它)任何其他管理区域页面将我重定向到 /Identity/Account/Login?ReturnUrl=%2Fback(预期行为)但该页面以及任何其他页面我测试的 /Identity 页面是空白的,在调试中运行时没有错误并且连接了调试器。

非常感谢任何帮助,完整启动如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using FranceMontgolfieres.Models;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.Extensions.Hosting;
using Microsoft.AspNetCore.Diagnostics.HealthChecks;

namespace FranceMontgolfieres
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-identity razor-pages asp.net-core-3.0

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

使用HttpListener自定义404

我遇到了HttpListener的问题,它工作正常(包括返回404)但是如果我向输出Stream写任何东西(返回404的自定义html)那么即使我设置状态代码= 404 firebug显示状态200 ok,一旦我删除自定义html它确实看到404按预期.

因为我得到404,如果我取消注释2个注释行我得到我想要显示的HTML但是200我想要404:

    //var buffer = System.Text.Encoding.UTF8.GetBytes("<html><head></head><body><h1>404 not found</h1></body></html>");
    //ctx.Response.OutputStream.Write(buffer, 0, buffer.Length);
    ctx.Response.StatusCode = 404;
Run Code Online (Sandbox Code Playgroud)

.net c# http httplistener .net-4.5

4
推荐指数
1
解决办法
2580
查看次数

在visual studio 2013 update 2中我需要使用SIMD?

所有我在网上发现的是关于如何在更新2出来之前使用它的过多帖子,我当时不想破坏我的机器所以我只是想我会等到它被释放.

现在它出来了,我安装了VS 2013 Professional更新2,我看到一个新的框架(4.5.2)存在,但我仍然只有4.5.1

我需要什么才能使用simd向量?我需要安装4.5.2吗?我是否需要下载测试版中使用的blc软件包,或者是否应该集成到框架中?

c# simd visual-studio-2013

4
推荐指数
1
解决办法
702
查看次数

使用“非常非常”的大型数组

我需要处理非常大的小类型数组(int 或 float 数组),我仅在具有大量 RAM 的计算机上针对 X64,物理内存在我的场景中从来不是问题。在查看 gcAllowVeryLargeObjects 的文档时,我注意到了这一点:

\n\n

\xe2\x80\xa2 对于字节数组和单字节结构数组,任何单一维度的最大索引为 2,147,483,591 (0x7FFFFFC7),对于其他类型为 2,146,435,071 (0X7FEFFFFF)。

\n\n

现在我的问题是我实际上“需要”使用比这更大的数组,这里合适的解决方法是什么?创建数组的数组或其他抽象?

\n\n

知道我主要需要顺序访问这些数组(从不随机读取,但通常不同的段由不同的线程顺序读取,可能一次超过 100 个线程)我最好的选择是什么?

\n\n

我可能需要保存多达 65 536 000 000 个或更多元素的数组。

\n

.net c# .net-4.5

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

在运行时动态更改对 dll 的引用

我遇到的情况是,不同的文件夹中有多个 .dll 文件,它们都具有相同的名称,包含相同的函数(具有相同的名称),但具有相同名称的函数内部的代码不同。

我在设计中创建了我的应用程序,引用了这些 .dll 文件之一。但我希望当我的应用程序启动时,使用选择案例能够更改对这些 dll 之一的引用。

这可能吗 ?

谢谢 !

c# dll assemblies system.reflection .net-assembly

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

在 UWP 中加速编译?

我在 WPF 中工作了很长时间后正在研究 UWP,编译速度非常慢。

我明白为什么发布编译很慢(净本地编译)但是在调试中被禁用,但在 F5 和屏幕上显示的应用程序之间仍然需要很多时间,即使对于空白应用程序也是如此。

有什么方法可以加快速度(即使以运行时性能为代价)?当您习惯了 C# 时,它真的很难使用,它为您提供极快的编译时间并在每次小的更改后进行测试。

例如,只需右键单击并在一个非常简单的(4 页,每行 < 200 行 xaml,以及几乎 0 个 C#)上重新构建 uwp 项目,在没有项目引用的情况下调试(没有 .net native)几乎需要 20 秒。同时,一个更大的 WPF 应用程序(几十个窗口,成千上万行代码)需要几秒钟的时间,而且大部分时间是复制子项目!

按照建议,您可以在此处找到一个最小的下载示例:https : //www.dropbox.com/s/0h89qsz66erba3x/WPFUWPCompileSpeed.zip?dl=0

这只是一个带有空白 wpf 和空白 uwp 应用程序的解决方案。WPF 的编译时间刚好超过 1 秒,UWP 的编译时间为 12 秒,在每种情况下都清理了解决方案,并右键单击并重建了我正在测试的单个项目。这是在调试中(没有 .net Native 编译)

.net c# visual-studio uwp

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