小编Mat*_*LES的帖子

AsNoTracking()和Include

我有一个Linq查询,用于获取实体及其某些导航属性.

context.MyEntity
    .AsNoTracking()
    .Include(i=> i.Nav1)
    .Include(i=> i.Nav2)
    .Where(x=> x.Prop1==1)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我的问题是:

以上查询是否足以不跟踪MyEntity导航属性NAv1和/ Nav2或我必须AsNoTracking为每个导航属性添加?

像这样:  

context.MyEntity
    .AsNoTracking()
    .Include(i=> i.Nav1)
    .AsNoTracking()
    .Include(i=> i.Nav2)
    .AsNoTracking()
    .Where(x=> x.Prop1==1)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

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

具有自有财产的种子实体

我正在尝试在我的数据库中播种用户实体.该User实体拥有一个owend财产EmailPermissions.

当我运行命令

dotnet ef migrations添加Initial;

我收到了错误

无法添加实体类型"用户"的种子实体,因为它具有导航"EmailPermissions"集.要种子关系,您需要将相关的实体种子添加到"EmailPermissions"并指定外键值{'UserId'}.

但由于EmailPermissions是一个拥有的实体,我没有给它一个明确的UserId属性,这意味着我不能在数据库中单独播种它.

实体

public sealed class User : IdentityUser
{
    public User()
    {
        EmailPermissions = new EmailPermissions();
    }

    /* [..] */

    public string TemporaryEmailBeforeChange { get; set; }
    public bool IsEmailAwaitingUpdate { get; set; }
    public EmailPermissions EmailPermissions { get; set; }
    public ICollection<Registeration> Registerations { get; set; }

    /* [..] */

}

[Owned]
public class EmailPermissions
{
    /* [..] */

    public bool Newsletter { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core ef-core-2.1

9
推荐指数
2
解决办法
3794
查看次数

隐式本地化法语中的“Required”注释

TLDR;如何获得行为

[Required(ErrorMessage = "Le champ {0} est obligatoire")]
Run Code Online (Sandbox Code Playgroud)

虽然只是写作

[Required]
Run Code Online (Sandbox Code Playgroud)

据我了解,该文档没有提供一种隐式本地化一组给定 DataAnnotations 的方法。

我希望有注释的错误消息,例如RequiredStringLength可以覆盖而不触及其他人,例如Display并且不需要使用ErrorMessage属性明确指定翻译。

注意:我只需要将消息翻译成法语,因此不需要将解决方案绑定到请求的语言。

我尝试了以下方法:

这个GitHub 线程

在里面 Startup.cs

services.AddMvc(options => options.ModelBindingMessageProvider.AttemptedValueIsInvalidAccessor =
    (value, name) => $"Hmm, '{value}' is not a valid value for '{name}'."));
Run Code Online (Sandbox Code Playgroud)

给了我以下错误

无法分配属性或索引器“DefaultModelBindingMessageProvider.AttemptedValueIsInvalidAccessor”——它是只读的

我找不到任何可以作为这个对象的 setter 的属性。


这个SO答案

Startup.cs services.AddSingleton();

并创建一个类,如跟随

public class LocalizedValidationAttributeAdapterProvider : IValidationAttributeAdapterProvider
{
    private readonly ValidationAttributeAdapterProvider _originalProvider = new ValidationAttributeAdapterProvider();

    public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer)
    { …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-2.1

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

`SwaggerRequestExample` 被忽略

当我向 API 添加 swagger 时,我想获得默认值和响应示例。我添加了 NuGet 包并尝试遵循本教程。该SwaggerResponseExample属性工作正常,但SwaggerRequestExample似乎被简单地忽略了。

我的行动定义如下

[SwaggerRequestExample(typeof(int), typeof(PersonExamples.Request))]
[SwaggerResponseExample(200, typeof(PersonExamples.Response))]
/* more attribute & stuff */
public IActionResult Get(int id) { /* blabla */ }
Run Code Online (Sandbox Code Playgroud)

PersonExamples定义如下的类(删除了非相关代码)

public class PersonExamples
{
    public class Request : IExamplesProvider
    {
        public object GetExamples() { return _persons.List().First().Id; }
    }

    public class Response : IExamplesProvider
    {
        public object GetExamples() { return _persons.List().First(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里也是相关的部分 Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(conf =>
    {
        conf.SwaggerDoc(_documentationPrefix, new …
Run Code Online (Sandbox Code Playgroud)

c# swagger swashbuckle asp.net-core-2.0

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

ffmpeg 支持 yv12 吗?

我有格式YUV的原始文件YV12YV12不是YUV420P,也不是I420X264可以处理,但是ffmpeg不能处理。

x264 --input-res 1280x720 --fps 25 --input-csp yv12 --output 2.mp4 2.yuv
--this runs correctly, and color is correct!

ffmpeg -c rawvideo -s 1280x720 -pix_fmt yv12 -r 25 -i 2.yuv 2.mp4
--there is an error: No such pixel format: yv12

ffmpeg -c rawvideo -s 1280x720 -pix_fmt yuv420p -r 25 -i 2.yuv 2.mp4
--this can run, but color is NOT correct!

ffmpeg -pix_fmts
--there is no YV12 format …
Run Code Online (Sandbox Code Playgroud)

video ffmpeg

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

C#中的英尺到米转换器坏了?

我正在尝试制作一个简单的英尺到仪表转换器,但发生了这种情况:

using System;
using System.Windows;
using System.Windows.Controls;

namespace CoolConversion
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        decimal feet;
        decimal meter;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            feet = Convert.ToDecimal(Feet.Text);
            meter = feet / 3.281;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我目前拥有的代码。起初,feet&meter是整数,但我不能将整数除以 3.281。我将它们更改为小数,现在出现此错误:

错误 CS0019 运算符“/”不能应用于“decimal”和“double”类型的操作数

如果我不能用整数除以小数,如果我不能/在小数上使用符号,我应该如何除以小数?

c# decimal division

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

标记助手`属性'别名

我找不到任何方法给netcore20中的单个标签助手(别名)赋予以下标签助手类定义多个名称

[HtmlTargetElement(Attributes = AttributeName)]
public class InDomIfTagHelper : TagHelper
{
    private const string AttributeName = "idi,in-dom-if";

    [HtmlAttributeName(AttributeName)]
    public bool InDomIf { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        base.Process(context, output);
        if (!InDomIf)
        {
            output.SuppressOutput();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用以下两种语法引用我的标记助手

<li idi='false'>content</li>
<li in-dom-if="true">content2</li>
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现帖子如这一对左右,但使得无论标签的需要(AND子句,基本上).

我仍然尝试定义我的Attributes属性"idi,in-dom-if"以及"[idi],[in-dom-if]"最后一个实际上给我一个错误:无效的标签帮助绑定属性

Admin.TagHelpers.InDomIfTagHelper.InDomIf".标记帮助程序无法绑定到名称为"[idi],[in-dom-if]"的HTML属性,因为该名称包含"]"字符.

我也尝试了这个"[name=idi],[name=in-dom-if]",我也在标签名称周围添加了引号......这些都没有用.

由于我似乎无法找到有关使用OR子句定义标记助手属性名称的更多信息,我想知道它是否可能...

我想避免在两个不同的类中定义两次相同的逻辑,因此它们可以具有相同的名称.

这甚至可能吗?如果是,我怎么能实现这个目标?

c# asp.net-core asp.net-core-tag-helpers

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

为什么不能将可为null的int隐式转换为int?技术原因还是设计选择?

在C#中,没有从int?类型到int类型的隐式转换。

我定义了以下隐式运算符

namespace System
{
    public partial struct Int32
    {
        public static implicit operator Int32(int? v)
        {
            return (Int32)(v ?? 0);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这使我可以编译以下代码

int? nullableInt = 0;
Int32 regularInt = nullableInt;
Run Code Online (Sandbox Code Playgroud)

但是如果我定义regularIntint而不是Int32我得到以下错误

无法隐式转换类型'int?' 为“ int”。存在显式转换(您是否缺少演员表?)

我期望int并且Int32可以互换,但是显然在构建C#语言时并未考虑到此功能。

不能定义此操作背后是否有技术原因,是否已做出决定以防止潜在的代码气味?

我知道定义这样的隐式运算符可能会导致某些非常意外的行为,因为从null值到0整数的转换并非在每种情况下都有意义。这个问题更多的是“为什么不能做”比“为什么做这是一个真正的 坏主意”

c# implicit-conversion

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