C# EF6问题。Can';t在数据库中添加新对象

C# EF6问题。Can';t在数据库中添加新对象,c#,database,entity-framework,ef-code-first,C#,Database,Entity Framework,Ef Code First,我正在尝试在我的win form应用程序中使用EF6。在我的代码中,当我在db中添加一个新对象时,我得到了空引用异常。 实际上,InitNewProducts方法中的Products属性为null。我做错了什么 using System.Data.Entity; namespace DAL { public class CartContext: DbContext { public CartContext(): base("DbConnection")

我正在尝试在我的win form应用程序中使用EF6。在我的代码中,当我在db中添加一个新对象时,我得到了空引用异常。 实际上,InitNewProducts方法中的Products属性为null。我做错了什么

using System.Data.Entity;

namespace DAL
{
    public class CartContext: DbContext
    {
        public CartContext(): base("DbConnection")
        {
        }
        public DbSet<Product> Products;
    }
}

using System.Collections.Generic;

namespace DAL
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public double Price { get; set;}
    }
}

private void InitNewProducts()
{
    using (var context = new CartContext())
    {
        var product1 = new Product {Id = 1, Name = "SomeProduct1", CartItems = new List<CartItem> {new CartItem {Id = 1} } };
        context.Products.Add(product1);
        context.SaveChanges();
    }
}
使用System.Data.Entity;
名称空间DAL
{
公共类CartContext:DbContext
{
public CartContext():基(“DbConnection”)
{
}
公共数据库集产品;
}
}
使用System.Collections.Generic;
名称空间DAL
{
公共类产品
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共双价{get;set;}
}
}
私有产品
{
使用(var context=new CartContext())
{
var product1=新产品{Id=1,Name=“SomeProduct1”,CartItems=新列表{new CartItem{Id=1}}};
context.Products.Add(product1);
SaveChanges();
}
}

将访问者添加到
DbSet

公共虚拟数据库集产品{get;set;}

您是在连接到数据库时出错,还是仅从查询中出错?您可能希望通过查找连接字符串是否正确来开始调试。在现有代码中,我没有看到任何数据库连接的打开。只需要将字段更改为属性,但谢谢您的支持help@user3525444对不起,我不明白你的意思,这不是原因吗?添加
{get;set;}
应该已经解决了您的问题。对不起,您当然完全正确。我指的是虚拟修饰符。@user3525444哦,对了,没问题,
virtual
修饰符是如果你想延迟加载,我只是出于本能键入它。(虽然我认为如果您使用ef core——这一点都不重要,因为上次我检查时它不支持延迟加载)仅供参考,延迟加载将在中提供。
public virtual DbSet<Product> Products {get; set;}