在 JetBrains Rider 中,是否有键盘快捷键来添加新的类文件?也许使用相同的弹出窗口来命名 C# 类,然后保存在当前选择/打开的目录中。
会节省很多鼠标点击:-)
问题: Oracle如何使用PLSQL进行字符串插值?给定一个包含在大括号内的命名参数的模板,然后用命名参数替换变量。功能类似于C# 字符串插值、Java 等语言。代码应该针对性能进行优化,尽管大多数代码不会经常使用。
大括号是强制性的,因为模板是业务用户定义并保存在表中的。这是公司使用的标准惯例。目标是在 Oracle 本身中“邮件合并”业务文档和片段。
实现:
最好封装在 PLSQL 和 SQL 中运行的函数。对于 SQL,名称值对的 csv 列表将在 example 中传递'name, jane, age, 26'
。name, value, name, value
ETC...
示例用例:
请注意使用双大括号作为文字“{”的转义符。模板将存储在数据库表中,替换变量将在运行时根据复杂的规则导出。下面的例子很简单:
模板='Hi my name is {name}, I am aged {age}, yes {age}! Replaced placeholders {{name}}, {{age}}'
变量=name: jane, age: 26
输出=Hi my name is Jane, I am aged 26, yes 26! Replaced placeholders {name} and {age}
调用虚构包的 PLSQL 示例:
DECLARE v_template NVARCHAR2(500);
v_name NVARCHAR2(50) := 'Jane'; …
Run Code Online (Sandbox Code Playgroud) 使用 .NET EFCore 3.0 - 查询类型已弃用,现在我们转向Entity Framework Core 3.0 中的“无键实体类型”。
我的要求是使用新语法将 MS SQL 数据库中的多个只读视图映射到 DbContext HasNoKey()
。
简单的示例架构,Order 有许多 OrderItems。如果这两个实体都来自视图,那么订单如何加载它的订单项?
public class ReadonlyActionOnDb
{
OrdersDbContext Db; //need to pass in via constructor etc, just for demo code.
protected void PrintOrderItems()
{
var custItems = Db.vOrders.Where(i=> i.CustomerId == 10).SelectMany(i=> i.OrderItems);
foreach (OrderItemDto i in custItems ) Console.WriteLine(i.ProductName);
}
}
//part of the config shown...
public partial class OrdersDbContext: DbContext
{
public DbSet<OrderDto> vOrders { …
Run Code Online (Sandbox Code Playgroud) 在 Jetbrains Rider 2021.3x 中,执行后,文档注释Code Clean Up
中的文本将缩进。如何禁用此功能?在下面的示例中,骑手在摘要标签中插入文本缩进,希望防止这种情况发生:
/// <summary>
/// Why does Rider indent these comments? How can it be disabled?
/// Any idea of what settings!?
/// </summary>
public class Person{}
Run Code Online (Sandbox Code Playgroud)
执行代码清理后,文本不应有缩进,如下所示:
/// <summary>
/// Why does Rider indent these comments? How can it be disabled?
/// Any idea of what settings!?
/// </summary>
public class Person{}
Run Code Online (Sandbox Code Playgroud)
只是努力寻找正确的设置......
使用 Oracle Apex (Oracle Application Express) 上的免费包,使用在线版本(非本地),托管于:
是否可以在数据库中创建多个数据库模式?这是免费的在线版本。
例如,创建一个名为 的表[finance].[t_users]
,其中架构名为[finance]
。
根据文档,这是可能的,但也许免费版本不允许这样做?
随着数据库的增长,多个模式至关重要,需要通过模式分离逻辑名称空间。
我有一个现有的 SQL Server 数据库,其中通过连接表实现了多对多关系Books
<-> :Authors
Publications
CREATE TABLE [dbo].[Books]
(
[BookId] INT IDENTITY,
[Title] NVARCHAR(160) NOT NULL,
...
)
CREATE TABLE [dbo].[Authors]
(
[AuthorId] INT IDENTITY,
...
)
CREATE TABLE [dbo].[Publications]
(
[BookId] INT NOT NULL,
[AuthorId] INT NOT NULL,
CONSTRAINT [PK_Publication] PRIMARY KEY ([BookId], [AuthorId])
)
Run Code Online (Sandbox Code Playgroud)
我需要在 Entity Framework Core 5 中配置多对多关系。
对于 EF 6,这相当简单:
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Entity<Author>() // an Author
.HasMany(a => a.Books) // has many Books
.WithMany(b => b.Authors) // …
Run Code Online (Sandbox Code Playgroud) 在 C# 中,在返回动态 的 for 循环中item
,当将item
传递给方法时,在将结果分配给不兼容的类型变量时,编译器不会验证该方法的返回类型。
注意:有一个类似的问题,但与更改返回类型有关,而这里我们专注于编译器类型检查,这是谷歌搜索的一个重要区别。
下面的示例更好地解释了为什么编译器没有引发类型转换错误?
void Main()
{
List<dynamic> vals = new List<dynamic>(100);
for (int i = 0; i < 100; i++) vals.Add(new { Id = i});
foreach (dynamic itm in vals)
{
//no compile error, why?? result should be an int, as GetId returns an int!
string result = GetId(itm);
Console.WriteLine($"id: {result}");
}
//id2 must be an int, else compile error
int id2 = GetId(new {Id = 100}); …
Run Code Online (Sandbox Code Playgroud)