小编Xap*_*ann的帖子

实体框架 foreach 表超过 800,000 条记录

迭代具有大量记录的表的正确方法是什么?我需要评估表中的所有记录。我正在使用实体框架连接 MS SQL 数据库并从中获取信息。我使用的是一个简单的foreach循环;

foreach (var x in MyEntity.MyTable)
{
   //logic process
}
Run Code Online (Sandbox Code Playgroud)

这非常适合少于 500,000 条记录的表(没有确切的数字)。问题是当它遇到更大的表(例如超过 800,000 条记录)时,应用程序会变得不稳定并会崩溃。我应该注意到该应用程序使用大量 RAM(大约 4-6GB)

c# sql-server entity-framework

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

IHttpClientFactory 并更改基础 HttpClient.BaseAddress

IHttpClientFactory 和更改 HttpClient.BaseAddress 的最佳实践是什么?

在创建我的依赖注入时,我是这样做的:

services.AddHttpClient("MyApp", c =>
    {
        c.BaseAddress = new Uri("https://myurl/");
        c.DefaultRequestHeaders.Add("Accept", "application/json");
    }).ConfigurePrimaryHttpMessageHandler(handler => new HttpClientHandler()
    { AutomaticDecompression = DecompressionMethods.GZip });
Run Code Online (Sandbox Code Playgroud)

然后当我需要一个 HttpClient 这样做时:

var client = clientFactory.CreateClient("MyApp");
Run Code Online (Sandbox Code Playgroud)

这很有效,但有时在运行时需要更改 BaseAddress。在运行期间,我无法在注入后更改 BaseAddress。现在我可以完全忽略 BaseAddress 并在 API 调用中发送整个地址,但是,我不知道这是否是正确的做法。像这样的东西:

await using var stream = await client.GetStreamAsync($"{addresss}/{api}");
using var streamReader = new StreamReader(stream);
using var textReader = new JsonTextReader(streamReader);
var serializer = new JsonSerializer();
data = serializer.Deserialize<List<T>>(textReader);
Run Code Online (Sandbox Code Playgroud)

c# wpf dependency-injection dotnet-httpclient

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

Flutter SharedPreferences Windows 位置

SharedPreferencesWindows 上的本地数据保存在哪里?比如路径在哪里?我指的是这个:

final prefs = await SharedPreferences.getInstance();
var myData = prefs.getString('myData');
Run Code Online (Sandbox Code Playgroud)

谢谢

sharedpreferences dart flutter

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

Google Cloud SQL禁用表名称区分大小写

有没有办法更改设置以禁用表名称区分大小写?我知道在.cnf中你所要做的就是添加这个;

lower_case_table_names = 1
Run Code Online (Sandbox Code Playgroud)

虽然我似乎无法找到办法做到这一点.谢谢

google-cloud-sql

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

Wix MajorUpgrade不会检测产品版本的最后位置

我正在尝试配置我的Wix Toolkit安装程序来处理我的Visual Studio应用程序的升级.

<?xml version="1.0" encoding="UTF-8"?>
<?define ProductVersion = "5.0.0.115"?>
<?define ProductUpgradeCode = "9880b0b8-b3b1-4fa6-b65e-d4ecff430248"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="My Software" Language="1033" Version="$(var.ProductVersion)" Manufacturer="My Company" UpgradeCode="$(var.ProductUpgradeCode)">
  <Package Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Comments="My Software version 5 installer" />

  <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed."  />
  <MediaTemplate EmbedCab="yes" />
Run Code Online (Sandbox Code Playgroud)

问题是使用MajorUpgrade实际上没有检测到.115.因此,例如安装了版本5.0.0.110,然后运行5.0.0.115安装程序,在添加/删除程序中它将列出5.0.0.110和5.0.0.115.如果我将版本更改为5.0.115.0一切正常.

这是程序应该如何工作或这是一个错误?

wix visual-studio

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

MySQL 和 Amazon RDS DBA 用户

我在 Amazon RDS 中有一个新的 MySQL 设置。启动实例时创建了“主用户”。能够毫无问题地连接。然后注意到用户不是 DBA。尝试在 MySQL Workbench 中修复此问题时,会出现以下错误;

Error changing account MyDBA@%%: Access denied for user 'MyDBA'@'%%' (using  password: YES)
Run Code Online (Sandbox Code Playgroud)

我该如何解决?在亚马逊 RDS 的某个地方吗?在工作台?MySQL的新手很抱歉这个简单的问题,但我找不到答案。

编辑:只是要清楚MyDBA是实例创建时在RDS中创建的主用户,所以我没有其他帐户可以登录

mysql amazon-web-services

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

WPF加载帧异步

我有一个TabConrol说法,当用户执行某些操作时,会以TabItem编程方式添加新内容。在此选项卡中有一个框架,其中将包含所需的Page.XAML。一切都像这样完美地工作;

private void addNewTab()
{
   TabItem tab = new TabItem();
   Grid g = new Grid();
   Frame f = newFrame();
   g.Children.Add(f);
   tab.Content = g;
   MyTabControl.Items.Add(tab);
   MyTabControl.SelectedItem = tab;
}

private Frame newFrame()
{
   Frame f = new Frame();
   //Full logic for Frame removed
   f.Navigate(new MyPage());
   return f;
}
Run Code Online (Sandbox Code Playgroud)

问题有时是加载新的文件Frame可能需要一段时间。所以我想做到这一点异步。因此,在加载时可能会有加载动画。我认为这会起作用。

private async void addNewTab()
{
   TabItem tab = new TabItem();
   Grid g = new Grid();

   var test = Task<Frame>.Factory.StartNew(() => newFrame(selectTab, value));
   await test; …
Run Code Online (Sandbox Code Playgroud)

c# wpf async-await

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

基于条件的WPF Binding.ValidationRules

我现在有TextBox一个Binding.ValidationRules的工作等;

<TextBox>
    <Binding Path="MyID" NotifyOnValidationError="True" ValidatesOnDataErrors="True" 
             Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnSourceUpdated="True" 
             NotifyOnTargetUpdated="True" Delay="100">
        <Binding.ValidationRules>
            <local:IDValidator ValidatesOnTargetUpdated="True" table="Items"  />
        </Binding.ValidationRules>
    </Binding>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

和风俗ValidationRule

public class IDValidator : ValidationRule
{
    public string table { get; set; }

    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        //Logic
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是在某些条件下我想IDValidator成为ValidationRule。其他时候我可能想说IDValidator2ValidationRule

现在,我找不到实现此目的的方法。所以我想起了为什么不将另一个值向下发送IDValidator,然后按照Validate

XMAL更新:

<local:IDValidator ValidatesOnTargetUpdated="True" table="Items" testing="{Binding Path=test}"  />
Run Code Online (Sandbox Code Playgroud)

IDValidator更新:

public string testing { get; set; }
Run Code Online (Sandbox Code Playgroud)

问题是似乎不喜欢向下发送绑定值。我该怎么做?

c# wpf

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

印花和 Blazor

我有一个Blazor连接到现有后端的应用程序。Blazor 应用程序需要打印来自List<T>. 这样做的正确方法是什么?

然而,在 WPF 世界中,我会使用 a DocumentPaginator,因为DocumentPaginator GetPage方法返回 a DocumentPage,它是一个 WPFVisual元素,所以这就不行了。

我很幸运地创建了FlowDocument这样的东西:

var doc = new FlowDocument();
var table1 = new Table();
doc.Blocks.Add(table1);
for (int x = 0; x < numberOfFields; x++)
{
    table1.Columns.Add(new TableColumn());
}
table1.RowGroups.Add(new TableRowGroup());
int i = 0;
foreach (var x in MyList)
{
    table1.RowGroups[0].Rows.Add(new TableRow());   
    TableRow currentRow = table1.RowGroups[0].Rows[i];
    AddFields(currentRow, i, x);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

但是,这会打印出一个文档,我需要页眉和页脚。放置页眉、页脚和分页符都可以完成,Paragraph而且Section非常简单。问题是计算何时应用分页符。我所见过的在 FlowDocument …

c# flowdocument blazor

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

Flutter Riverpod 在一个本身就是 StateProvider 的类中调用 StateProvider

我有一个Class正在被调用Widgets,但这Class需要从另一个中提取数据 Class。基本上,我使用 Riverpod 作为依赖注入,并且不确定这是“正确的”还是我做错了。这是我所做的:

main.dart

var myClass1 = Class1();
final class1Provider = StateProvider((ref) => myClass1);
final class2Provider = StateProvider((ref) => Class2(myClass1));
Run Code Online (Sandbox Code Playgroud)

这是推荐的方式还是我应该做其他事情?

仅供参考,这确实有效;

Widget build(BuildContext context) {
  displayData = (ref.watch(class2Provider.notifier).state).getData();
Run Code Online (Sandbox Code Playgroud)

谢谢

flutter riverpod

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

C#动态集合的位置

我想基于文本框搜索集合.应允许用户以任何顺序键入多个单词.这意味着如果集合中的字符串是"多么快乐的一天",并且用户键入"day What"字符串应该出现.现在我知道如何用这样的东西硬编码允许的单词数量(例如只允许3个单词);

 nc = oc.Where(X => X.SearchData.IndexOf(words[0]) > -1 || X.SearchData.IndexOf(words[1]) > -1 || X.SearchData.IndexOf(words[2]) > -1);
Run Code Online (Sandbox Code Playgroud)

注意:是的我知道我必须保护以确保数组字中有实际的3个值,但是没有显示.

这个问题是它限制了用户,我不想这样做.如果用户想要搜索10或20件事,那对我来说没问题.

有没有办法为集合oc动态创建Where语句?

谢谢

c# collections

0
推荐指数
1
解决办法
81
查看次数