小编Eti*_*and的帖子

AddIdentity与AddIdentityCore

在ASP.NET的核心,您可以识别添加各种服务:AddDefaultIdentityAddIdentityAddIdentityCore

AddIdentity和之间有什么区别AddIdentityCore

.net c# asp.net-mvc asp.net-core

15
推荐指数
2
解决办法
2665
查看次数

实体框架核心 SQLite 连接字符串关键字不受支持:版本

我使用 SQLite 数据库使用 .NET Core 2.2 创建了一个 ASP.NET MVC 网站。到目前为止,它运行良好。当我想将特定于 SQLite 的关键字添加到连接字符串时,问题就开始了,例如

Data Source=~\\App_Data\\MyDb.db; Version=3; DateTimeFormat=UnixEpoch; DateTimeKind=Utc
Run Code Online (Sandbox Code Playgroud)

现在我得到

不支持关键字:'版本'

我像这样注册数据库

// ConfigureServices(IServiceCollection services)
var conn = Configuration.GetConnectionString("MyDB").Replace("~", _env.ContentRootPath);
services.AddDbContext<MyDBContext>(options => options.UseSqlite(conn));
Run Code Online (Sandbox Code Playgroud)

然后 MyDBContext 有

public partial class MyDBContext : DbContext
{
    public MyDBContext() { }

    public SatrimonoContext(DbContextOptions<MyDBContext> options)
        : base(options) { }

    public virtual DbSet<Book> Book { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我在我的页面模型中使用它

private SatrimonoContext _db;

public BookAccuracyListModel(SatrimonoContext dbContext)
{
    _db = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
}
Run Code Online (Sandbox Code Playgroud)

从那里我可以通过 LINQ 正常访问 …

c# sqlite entity-framework-core

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

使用Entity Framework 6调用DB函数

我按照这些说明将标量函数添加到我的Entity Framework 6数据模型中. 如何使用带有linq的标量值函数实体?

但是,我无法在LINQ查询中调用该函数,尽管直接在DataContext上调用该方法也可以.

using (Entities context = new Entities()) {
    // This works.
    var Test1 = context.fn_GetRatingValue(8, 9, 0).FirstOrDefault();
    // This doesn't work.
    var Test2 = (from r in context.MediaRatings
                select context.fn_GetRatingValue(r.Height, r.Depth, 0)).ToList();
}
Run Code Online (Sandbox Code Playgroud)

第二个查询抛出此错误.

LINQ to Entities does not recognize the method 'System.Data.Entity.Core.Objects.ObjectResult`1[System.Nullable`1[System.Single]] fn_GetRatingValue(System.Nullable`1[System.Single], System.Nullable`1[System.Single], System.Nullable`1[System.Single])' method, and this method cannot be translated into a store expression.
Run Code Online (Sandbox Code Playgroud)

此外,设计师正在给我这个警告

Error 6046: Unable to generate function import return type of the store function 'fn_GetRatingValue'. The store function will …
Run Code Online (Sandbox Code Playgroud)

c# sql linq entity-framework-6

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

C#如何打开HEIC图像

我在ASP.NET中有一个支持JPG / PNG / GIF的图像上传表单,我认为就足够了。直到苹果推出了他们的新HEIC图像格式。如何在C#中处理呢?

搜索C#和HEIC在Google中什么都没有显示,因此似乎尚未解决该问题。

.NET Framework是否支持开箱即用的HEIC?可能不是,因为它太新了。是否有任何支持它的第三方库?我想将HEIC转换为JPG进行存储。

谢谢

c# asp.net

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

如何使用带有 ValidateDataAnnotations 的配置

我已经阅读了OptionsConfiguration基础知识的 Microsoft 文档,但仍然找不到在验证数据注释时将配置提取到对象中的正确方法。

我尝试过的一种方法 Startup.ConfigureServices

services.AddOptions<EmailConfig>().Bind(Configuration.GetSection("Email")).ValidateDataAnnotations();
Run Code Online (Sandbox Code Playgroud)

这“应该”允许通过在类构造函数中添加它来访问配置: (IOptions<EmailConfig> emailConfig)

但是它不起作用。

另一种方法是添加(IConfiguration configuration)到构造函数中,但这不允许我调用ValidateDataAnnotations.

configuration.GetSection("Email").Get<EmailConfig>();
Run Code Online (Sandbox Code Playgroud)

第一个问题:绑定和验证配置的责任属于 Startup 类还是使用它的类?如果它被多个类使用,我会说它属于 Startup;并且该类可以在具有不同配置布局的另一个项目中使用。

第二个问题:绑定和验证配置以便可以从类访问它的正确语法是什么?

第三个问题:如果我在 Startup 中通过数据注释进行验证,那么使用该配置的类会简单地假设配置是有效的,并且我不进行任何重新验证?

更新:在获得更多经验并查看我所有代码的结构后,我改变了我的方法以遵循标准模式。

以下代码确实有效...但仅在使用时对其进行验证。这可以在类库中注册,并且在使用特定服务之前不会抛出任何错误。

services.AddOptions<EmailConfig>()
    .Bind(configuration.GetSection("Email"))
    .ValidateDataAnnotations();
Run Code Online (Sandbox Code Playgroud)

然后,在配置中,我添加它以在启动时强制验证所需的配置值(CheckNotNull 是一个自定义扩展方法,重要的是您调用 IOptions.Value

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app?.ApplicationServices.GetService<IOptions<EmailConfig>>().Value.CheckNotNull("Config: Email");
    app?.ApplicationServices.GetService<IOptions<OntraportConfig>>().Value.CheckNotNull("Config: Ontraport");
    ...
Run Code Online (Sandbox Code Playgroud)

然后在课堂上使用它

public class EmailService(IOptions<EmailConfig> config)
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-core

6
推荐指数
2
解决办法
2808
查看次数

WPF MVVM 与 Razor 页面 MVVM

WPF 中的 MVVM 模式非常强调将 ViewModel 与 UI 完全分离,理想情况下,代码隐藏文件中什么也没有或很少。这允许将 ViewModel 重用于不同类型的界面。

Razor Pages 中的 MVVM 模式具有作为 ViewModel 的代码隐藏,并通过 OnGet 和 OnPost 方法与 Web 逻辑紧密耦合。

因此,精心设计的解耦 WPF ViewModel 不能作为 Web ViewModel(或者可以网页 Model 中使用?)

有没有我遗漏的东西,为什么 WPF 中的 MVVM(解耦)和 Razor Pages 中的 MVVM(耦合)之间存在如此大的差异?

如果我们将 Razor Pages 方法应用于 WPF,那么代码隐藏将成为 ViewModel —— 我从未见过有人推荐过它。

.net c# wpf mvvm asp.net-core

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

如何调试 System.Text.Json 反序列化器

如果使用 System.Text.Json 反序列化 JSON 数据,其中数据与目标模型不匹配,则会抛出 NotSupportedException 且不包含任何详细信息。

如果数据很复杂,则很难确定问题发生的位置。

有没有办法获得更多调试信息,或者关于哪个成员反序列化失败的一些提示?

编辑

这是一个示例命令

var result = await JsonSerializer.DeserializeAsync<ApiResponse<T>>(responseStream, OntraportSerializerOptions.Default, CancellationToken.None).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)

错误信息:

2[System.Int32,OntraportApi.Models.ResponseSectionFields]' on 'OntraportApi.Models.ApiResponse不支持集合类型“System.Collections.Generic.Dictionary 1[System.Collections.Generic.Dictionary`2[System.Int32,OntraportApi.Models.ResponseSectionFields]].Data”。

responseStream.Length = 18494,要我粘贴吗?

.net c# .net-core system.text.json

6
推荐指数
0
解决办法
3357
查看次数

声明 Avalonia Window 的设计时 ViewModel

我正在寻找正确的方法来声明 Avalonia 窗口的设计时 ViewModel。

一些样本表明

d:DataContext="{d:DesignInstance viewModels:LoginViewModel, IsDesignTimeCreatable=True}"
Run Code Online (Sandbox Code Playgroud)

这会抛出

XamlParseException at 5:5: Unable to resolve type DesignInstance from namespace http://schemas.microsoft.com/expression/blend/2008
Run Code Online (Sandbox Code Playgroud)

默认 Avalonia MVVM 模板建议

<Design.DataContext>
    <vm:MainWindowViewModel/>
</Design.DataContext>
Run Code Online (Sandbox Code Playgroud)

如果 ViewModel 接受参数,它会抛出

XamlLoadException at 16:10: Unable to find public constructor for type Demo.CloseNonModalDialog:Demo.CloseNonModalDialog.CurrentTimeDialogViewModel()
Run Code Online (Sandbox Code Playgroud)

我想添加默认的无参数构造函数是一种选择。

使用 MvvmLight/WPF,我曾经将 ViewLocator 作为静态资源引用

DataContext="{Binding Source={StaticResource Locator}, Path=MainWindow}"
Run Code Online (Sandbox Code Playgroud)

这是一个选项,尽管我还没有找到声明和引用资源的正确方法。

这里推荐的方法是什么?如果我想显示设计时数据,我会说只有第三个选项才有效。这不是示例中显示的选项。

.net c# mvvm avaloniaui

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

WPF 设置 ListViewItem.Background 与绑定

我有一个网格模式的 ListView,我在其中显示数据列表。网格有效,但我无法绑定 Background 属性。如果“FileExists == false”,那么我想以红色显示该行。为什么这不起作用?

该列表在 Windows.Loaded 中加载。我还将 [ImplementPropertyChanged] 属性添加到数据类(使用 NuGet PropertyChanged.Fody),但这没有帮助。

<ListView x:Name="VideosView" TabIndex="2" SelectedValuePath="VideoId" Margin="10,50,10,37" ButtonBase.Click="VideosView_ColumnHeaderClick">
    <ListView.Resources>
        <Style TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding FileExists}" Value="False">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Artist, Mode=OneWay}" Header="Artist" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Title, Mode=OneWay}" Header="Title" Width="300"/>
            <GridViewColumn DisplayMemberBinding="{Binding Length, Converter={StaticResource TimeSpanConverter}, Mode=OneWay}" Header="Length" Width="40"/>
        </GridView>
    </ListView.View>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <EventSetter Event="Control.MouseDoubleClick" Handler="VideosView_ItemDoubleClick"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>
Run Code Online (Sandbox Code Playgroud)

数据类

[ImplementPropertyChanged]
public class VideoListItem {
    public VideoListItem() {
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding

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

MONO 4.6.2服务器上的CPU高使用率

我已经更新了:

  • Ubuntu服务器到16.04.1 LTS
  • MONOv4.6.2

...来自官方资料库

自更新以来,网站仍然可以正常运行,但是大约一两天后,一些MONO进程变得疯狂,占用了100%CPU。我有不同的网站;大部分是纯HTML,只包含少量代码。它随机发生,并且每次都在不同的网站上发生。这是完全随机的。

然后,我收到一封有关CPU使用率过高的电子邮件警报,通过SSH进行连接,键入“ htop”,然后终止该进程,然后恢复正常……一两天。

这肯定看起来像是此MONO版本中的错误。有什么办法解决吗?还有其他人有这个问题吗?还是我应该切换到没有此损坏的其他版本?

谢谢

编辑:2天后,每个 MONO进程都占用了整个CPU。

查看Apache2日志文件,我可以找到与MONO相关的内容

WARNING: WebConfigurationManager's LRUcache evictions count reached its max size
Cache Size: 100 (overridable via MONO_ASPNET_WEBCONFIG_CACHESIZE)
Run Code Online (Sandbox Code Playgroud)

另外,“服务apache2重新启动”不能解决问题。我必须手动终止进程或重新启动。

c# ubuntu mono apache2 ubuntu-16.04

5
推荐指数
0
解决办法
1262
查看次数