C# EF6问题。Can';t在数据库中添加新对象
我正在尝试在我的win form应用程序中使用EF6。在我的代码中,当我在db中添加一个新对象时,我得到了空引用异常。 实际上,InitNewProducts方法中的Products属性为null。我做错了什么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")
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;}