迭代具有大量记录的表的正确方法是什么?我需要评估表中的所有记录。我正在使用实体框架连接 MS SQL 数据库并从中获取信息。我使用的是一个简单的foreach循环;
foreach (var x in MyEntity.MyTable)
{
//logic process
}
Run Code Online (Sandbox Code Playgroud)
这非常适合少于 500,000 条记录的表(没有确切的数字)。问题是当它遇到更大的表(例如超过 800,000 条记录)时,应用程序会变得不稳定并会崩溃。我应该注意到该应用程序使用大量 RAM(大约 4-6GB)
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) SharedPreferencesWindows 上的本地数据保存在哪里?比如路径在哪里?我指的是这个:
final prefs = await SharedPreferences.getInstance();
var myData = prefs.getString('myData');
Run Code Online (Sandbox Code Playgroud)
谢谢
有没有办法更改设置以禁用表名称区分大小写?我知道在.cnf中你所要做的就是添加这个;
lower_case_table_names = 1
Run Code Online (Sandbox Code Playgroud)
虽然我似乎无法找到办法做到这一点.谢谢
我正在尝试配置我的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一切正常.
这是程序应该如何工作或这是一个错误?
我在 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中创建的主用户,所以我没有其他帐户可以登录
我有一个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) 我现在有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。其他时候我可能想说IDValidator2是ValidationRule。
现在,我找不到实现此目的的方法。所以我想起了为什么不将另一个值向下发送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)
问题是似乎不喜欢向下发送绑定值。我该怎么做?
我有一个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 …
我有一个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)
谢谢
我想基于文本框搜索集合.应允许用户以任何顺序键入多个单词.这意味着如果集合中的字符串是"多么快乐的一天",并且用户键入"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# ×6
wpf ×3
flutter ×2
async-await ×1
blazor ×1
collections ×1
dart ×1
flowdocument ×1
mysql ×1
riverpod ×1
sql-server ×1
wix ×1