我有一个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) 我正在尝试在我的数据库中播种用户实体.该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) TLDR;如何获得行为
[Required(ErrorMessage = "Le champ {0} est obligatoire")]
Run Code Online (Sandbox Code Playgroud)
虽然只是写作
[Required]
Run Code Online (Sandbox Code Playgroud)
据我了解,该文档没有提供一种隐式本地化一组给定 DataAnnotations 的方法。
我希望有注释的错误消息,例如Required和StringLength可以覆盖而不触及其他人,例如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) 当我向 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) 我有格式YUV的原始文件YV12。
YV12不是YUV420P,也不是I420。
X264可以处理,但是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) 我正在尝试制作一个简单的英尺到仪表转换器,但发生了这种情况:
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”类型的操作数
如果我不能用整数除以小数,如果我不能/在小数上使用符号,我应该如何除以小数?
我找不到任何方法给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#中,没有从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)
但是如果我定义regularInt为int而不是Int32我得到以下错误
无法隐式转换类型'int?' 为“ int”。存在显式转换(您是否缺少演员表?)
我期望int并且Int32可以互换,但是显然在构建C#语言时并未考虑到此功能。
不能定义此操作背后是否有技术原因,是否已做出决定以防止潜在的代码气味?
我知道定义这样的隐式运算符可能会导致某些非常意外的行为,因为从null值到0整数的转换并非在每种情况下都有意义。这个问题更多的是“为什么不能做”比“为什么做这是一个真正的 坏主意”
c# ×6
asp.net-core ×1
decimal ×1
division ×1
ef-core-2.1 ×1
ffmpeg ×1
linq ×1
swagger ×1
swashbuckle ×1
video ×1