我有一个List<Cat>地方Cat是struct有一个ID和一个名称.
如何更改ID为7的猫的名称?
我做了(没想到)
var myCat = catList.Single(c => c.Id == 7);
mycat.Name = "Dr Fluffykins";
Run Code Online (Sandbox Code Playgroud)
但当然,结构是价值类型.那么是否可以使用这样的技术,或者我是否必须更改.Single为for循环并存储索引以使用更新的结构替换它?
我正在使用实体框架,这就是我的问题所在,但它可能不相关,因为我认为这是一个通用的 C# 问题。
我有一个MyContext具有许多DbSet<T>属性的类。
为了对其进行单元测试,我编辑了 MyContext,因此它们被IDbSet<T>替换并模拟了所有内容。IDbSet<T>是实体框架的一部分,DbSet 实现它,因此两者几乎相同。
一切都这样顺利,因为我可以尽IDbSet<T>我所能DbSet<T>
除了一件事之外的所有内容 -DbSet有一个名为SqlQuery(..)我也希望能够从我的IDbSet.
由于我无法更改DbSet或IDbSet,这给我留下了一个难题。我无法完全弄清楚如何制作它,因此我IDbSet能够SearchQuery(..)以某种逻辑方式添加一个方法。
那有意义吗?我很困惑,所以我可能忽略了一些非常简单的事情,例如复制和粘贴IDbSet、重命名并添加SearchQuery(). 有任何想法吗?
我有以下代码:
var myCats = _context.Cats.Where(c => c.OwnerId == 1).OrderBy(c => c.Age);
var uniqueCatIds = myCats.Select(c => c.CatId).Distinct();
Run Code Online (Sandbox Code Playgroud)
出于某种原因,OrderBy当我使用探查器检查输出SQL时,将忽略该子句.我想要做的是按照它们在myCats中出现的顺序选择所有唯一的猫ID,并保留请求的IQueryable性质.
如果我放在.ToList()OrderBy之后,则排序出现在SQL中并且它可以工作.然而,有这么多猫,这样做很慢.
任何想法为什么会这样?
我在我的api上有一堆操作,它们是通用的GetById和GetByIds,它们将实体拉出并通过格式化程序返回.
这些操作如下所示:
[HttpGet]
[Route("ByIds")]
public IHttpActionResult ByIds([FromUri]int[] ids)
{
var items = _myContext.SomeEntity.Where(a => ids.Contains(a.ID)).ToList();
return SomeFormatter(items);
}
Run Code Online (Sandbox Code Playgroud)
http://localhost/api/SomeEntity/ByIds?ids=1&ids=2例如,如果你点击这个,就会得到一个1和2的数组,正如你所期望的那样.
如果你点击它http://localhost/api/SomeEntity/ByIds?ids=可能会得到一个空数组,但你得到int[1]一个值0.
我怀疑发生了什么是它将其识别为指定的一个元素,无法转换它,因此使用default(int)并将其放入数组中,这会为您提供一个具有一个值的int数组,值为0.
但是,如果你点击它http://localhost/api/SomeEntity/ByIds?ids=potato然后你得到一个无效的模型状态,我自动处理它.
问题是,将空查询参数值映射到空数组或ModelState错误(即,如果提供空值,则与马铃薯行为相同)的方法是什么?我认为模型状态错误是首选,更合乎逻辑.
我们刚刚购买了专业版并切换到 SVG,因为图标看起来更好了。
然而,我们在加载图标时每个页面上都存在一些闪烁问题。
我通过确保图标加载时不会调整页面大小,稍微减轻了它的不和谐性质(就像之前带有文本的图标将在容器顶部加载文本一样,然后图标加载将向下移动)。
但它仍然有点令人恼火。CSS 版本不会出现这些问题。
具体来说:
<head>顶部。我有一个简单的数据库,其中有一张表,该表具有各种属性。
我正在使用最新的 .NET core 6 和最新的 EF (6.0.4)
我想构建我的数据库以便它生成模型,所以我运行命令:
dotnet ef dbcontext scaffold "Server=MyServerName;Database=MyDBName;User Id=sa;Password=abc123;"
Microsoft.EntityFrameworkCore.SqlServer -o Model --no-pluralize -d -f
Run Code Online (Sandbox Code Playgroud)
-d 命令应该使用数据注释而不是流畅注释,但事实并非如此。我最终得到一个MyTable类,其中清楚地列出了属性,例如public int MyTableId; public string MyTableProperty;....,然后在我的MyDBNameContext类OnModelCreating方法中,有几页这样的内容:
modelBuilder.Entity<MyTable>(entity =>
{
entity.HasIndex(e => e.SomeColumn, "idx_somecolumn");
entity.Property(e => e.firstcolumn)
.HasColumnType("decimal(8, 1)")
.HasColumnName("FirstColumn");
...
Run Code Online (Sandbox Code Playgroud)
这真是太可怕了。帮助中是这么说的:
-d|--data-annotations 使用属性来配置模型(如果可能)。如果省略,则仅使用 Fluent API。
我可以煞费苦心地手动完成并添加注释,但如果我将来由于更改而重新生成,那么它将撤消我的工作。
数据注释属性不起作用是否有原因?
.net scaffolding entity-framework-core entity-framework-migrations
我有一个复选框列表,可以在列表中显示它们
A
B
C
D
Run Code Online (Sandbox Code Playgroud)
或水平的
A B C D
Run Code Online (Sandbox Code Playgroud)
我想把它们安排在这样一个漂亮的网格中
A B C D
E F G H
I J K L
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
在我的页面加载中,我检查了一些内容,并且我希望显示标准的"拒绝访问"消息,而无需经历创建要重定向到的页面的麻烦.
有一个简单的方法吗?
我通过C#到VB的自动翻译器运行了一些代码,它翻译了一些这样的代码:
Public Property Title As [String]
Run Code Online (Sandbox Code Playgroud)
这有什么不同
Public Property Title As String
Run Code Online (Sandbox Code Playgroud)
为什么两者都存在?
c# ×3
asp.net ×2
.net ×1
asp.net-4.0 ×1
asp.net-mvc ×1
checkboxlist ×1
entity-framework-migrations ×1
font-awesome ×1
identifier ×1
interface ×1
scaffolding ×1
struct ×1
svg ×1
vb.net ×1