You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用dbContext.Users.Count()触发Sequence多匹配元素异常

EF Core Seed方法触发System.TypeInitializationException的原因与解决

触发原因

这个异常的根源是你定义的User实体中存在非自动属性的字段:SignatureFormatted和NrPosts。这两个字段被标记为[NotMapped],但EF Core在初始化内部的EnumerableMethods类型时,其反射逻辑会扫描实体的所有成员(包括字段和属性),当处理这些非属性形式的字段时,内部逻辑尝试查找匹配成员却找到多个结果,从而抛出Sequence contains more than one matching element的内部异常,最终引发TypeInitializationException。

解决方法

将这两个[NotMapped]标记的字段改为自动属性即可解决问题,EF Core对实体属性的处理更兼容,不会触发该异常。修改后的User类代码如下:

public class User:IdentityUser
{
    public string Discriminator { get; set; } = "User";
    public string Country { get; set; } = "";
    public string Signature { get; set; } = "";
    public bool IncludeSignature { get; set; } = true;

    public DateTime CreateDate { get; set; }

    [NotMapped]
    public bool SignatureFormatted { get; set; } = false;
    

    [NotMapped]
    public int NrPosts { get; set; } = 0;
}

额外优化建议:你的Seed方法中使用GetAwaiter().GetResult()同步等待异步方法,存在死锁风险,建议将Seed改为异步方法,在调用处使用await执行。

内容的提问来源于stack exchange,提问作者user1238784

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:15:57