EF6 WinForm应用添加数据库对象时出现空引用异常求助
EF6 WinForm添加对象触发空引用异常的问题排查与解决
兄弟,问题一眼就能看出来——你在CartContext里定义的Products是字段(Field)而非属性(Property),EF6根本不会自动初始化这个字段,所以它一直是null,调用Add方法时自然触发空引用异常了!
具体错误点
你当前的代码里:
public DbSet<Product> Products; // 这是字段,EF6不识别也不会自动初始化
EF6要求实体集必须是带getter和setter的属性,这样它才能在上下文初始化时自动创建DbSet的实例。
修正后的代码
把Products改成属性形式即可:
using System.Data.Entity; namespace DAL { public class CartContext: DbContext { public CartContext(): base("DbConnection") { } // 改为带get和set的属性,EF会自动初始化实例 public DbSet<Product> Products { get; set; } } }
额外注意事项
- 确保WinForm项目的
App.config里配置了正确的DbConnection连接字符串,否则即使修复了属性,也可能出现数据库连接失败的问题。 - 如果你用的是Code First模式,记得先启用迁移(
Enable-Migrations命令)或者手动确保数据库已经生成,避免后续出现找不到表的问题。
内容的提问来源于stack exchange,提问作者user3525444
相关产品推荐
相关产品推荐

