小编Twe*_*nty的帖子

将复合类型从 postgresql 映射到 ef core

我在 postgre 数据库中定义了以下复合类型:

CREATE TYPE foobar AS
(
   foo NUMERIC,
   bar NUMERIC
);
Run Code Online (Sandbox Code Playgroud)

我创建了一个具有相同属性的结构:

public struct FooBar
{
   public decimal Foo { get; set; }
   public decimal Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在实体中使用 FooBar :

public class FooyaEntity
{
   public Guid Id { get; set; }
   public string Name { get; set; }
   public FooBar FooBar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将如何配置 ef core 来正确映射这些?目前,当尝试添加某些内容时,会产生以下错误:

System.InvalidOperationException:无法映射属性“Test.FooBar”,因为它的类型为“FooBar”,不是受支持的基元类型或有效的实体类型。显式映射此属性,或者使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略它。

npgsql 的文档还显示了没有 ef core 的工作示例。

c# postgresql npgsql composite-types entity-framework-core

3
推荐指数
1
解决办法
1999
查看次数

在 C# 中使用自定义属性是内存/性能瓶颈吗?

我想用自定义属性装饰我的方法和 GUI 控件。我想知道属性如何消耗内存或影响应用程序性能。什么是属性的生命周期。意味着当一个类的对象在方法、属性和自身中具有自定义属性时。被实例化,然后被释放。如果所有自定义属性实例也随着对象的解构而处理,或者它们仍然保留在内存中?

c# performance custom-attributes

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

无法将类型'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry <T>'隐式转换为'T'

我正在使用ASP.NET core 2.2开发Web api。我在存储库类中具有以下方法:

public async Task<Articles> AddAsync(Articles article)
{
   return await _context.Articles.AddAsync(article);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Cannot implicitly convert type 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<Author.Command.Persistence.DBContextAggregate.Articles>' to 'Author.Command.Persistence.DBContextAggregate.Articles'
Run Code Online (Sandbox Code Playgroud)

在这里,我试图使用AddAsync版本来保存数据。

谁能帮助我提供解决此问题的指导?

c# entity-framework-core asp.net-core-2.2

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

列表和集合的通用约束

我有一个通用方法,看起来像这样:

public int GetCount<T>(T collection) where T: ICollection
{
   return collection.Count;    
}
Run Code Online (Sandbox Code Playgroud)

现在我希望能够调用此方法,其中集合参数可以是 aList<T>或 a HashSet<T>。当前的代码无法满足这一要求,因为我想要传递的参数不继承该ICollection接口。现在有什么方法可以通过简单的约束来实现这一点吗?

c# generics constraints generic-constraints

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

如何检查文本框是否以数值开头

在 Windows 窗体 C# 中,我想检查我制作的文本框是否以数值开头,如果是,我想在开头插入减号 (-) 以将数字更改为负数,我找到了一种方法,但它是太浪费时间了,这是我的代码:

if (richTextBox1.Text.StartsWith("1") || richTextBox1.Text.StartsWith("2") #until richTextBox1.Text.StartsWith("9"))
{
    richTextBox1.Text.Insert(0, "-");
}
Run Code Online (Sandbox Code Playgroud)

所以我在问,是否有更短的方法来替换该代码?

c#

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

异步返回任务方法

我的方法是这样的:

public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer)
{
    string value = Encoding.ASCII.GetString(buffer, 0, result.Count);

    var message = Message.Create(value);

    if (message is CallMessage callMessage)
    {
        await OnCall(socket, callMessage);
    }

    await Task.CompletedTask; // ??? -> Does it require here?
}
Run Code Online (Sandbox Code Playgroud)

如果代码没有进入if块,是否需要写await Task.CompletedTask在方法的最后?

.net c# async-await

-1
推荐指数
1
解决办法
58
查看次数