EF Core中UserIBANInfo实体构造函数参数绑定失败问题
问题解决:实体构造器参数无法绑定的异常
问题原因
EF Core 默认会依据参数名与属性名的大小写匹配来绑定构造器参数到实体属性。你的构造器参数是小写的iban,而实体属性是大写的IBAN,大小写不匹配导致无法识别绑定关系,触发了异常。
解决方案
提供三种可行的解决方式,按需选择:
1. 修改构造器参数名,与属性名大小写一致
直接把构造器参数名改成和属性名完全一致的IBAN,EF Core就能自动匹配绑定:
public class UserIBANInfo { public UserIBANInfo(string IBAN) { this.IBAN = IBAN; } [Key] public string IBAN { get; set; } }
2. 使用特性显式指定参数对应的属性
如果不想修改参数名,可以给构造器参数添加[property: Name]特性,明确指定对应实体属性:
using System.ComponentModel.DataAnnotations.Schema; public class UserIBANInfo { public UserIBANInfo([property: Name(nameof(IBAN))] string iban) { IBAN = iban; } [Key] public string IBAN { get; set; } }
3. 添加无参构造器(不推荐,但可临时解决)
EF Core 可以使用无参构造器实例化实体,添加一个私有或公共的无参构造器也能绕过这个问题,但这种方式不如前两种符合EF Core的最佳实践:
public class UserIBANInfo { // 无参构造器,私有也可被EF Core识别 private UserIBANInfo() { } public UserIBANInfo(string iban) { IBAN = iban; } [Key] public string IBAN { get; set; } }
内容的提问来源于stack exchange,提问作者Ivailo
相关产品推荐
相关产品推荐

