在此处需要有关插入代码的帮助。我收到一个错误
“对象引用未设置为对象的实例”。
我是Entity Framework的新手。希望你们能帮助我。
这是代码:
protected void SaveButton_Click(object sender, EventArgs e)
{
var context = new MHC_CoopEntities();
InventList product = new InventList
{
InventCategory = { CategoryID = 2 },
ItemName = "Del Monte Fit & Right Pineapple 330ml",
UnitQty = 48,
UnitPrice = (decimal) 20.85
};
context.AddToInventLists(product);
context.SaveChanges();
}
堆栈追踪:
在Coop_WebApp._Default.SaveButton_Click(对象 发件人,EventArgs e)在E:\ Others \ Wabby ko \ Entity Framework中 4.0 \ EF_Soln \ Coop_WebApp \ Default.aspx.cs:第37行 在System.Web.UI.WebControls.Button.OnClick(EventArgs e)
在System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
在System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
在System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)
在System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
答案 0 :(得分:1)
我假设product.InventCategory是一个类型为Category的属性。执行InventCategory = { CategoryID = 2 }
时,它只会设置CategoryID
属性。但是,它需要这个对象。这就是为什么你从上下文中获取Category对象并使用它来设置InventCategory
属性。希望这是有道理的。
答案 1 :(得分:0)
您必须使用给定的Category
创建CategoryID
实例,然后将其附加到上下文。附加是必要的,否则EF将在数据库中创建一个新的Category
对象,而不是仅将关联设置为现有类别2.您还应确保正确处置创建的上下文以释放数据库连接 - 例如将代码包装到using
块中:
protected void SaveButton_Click(object sender, EventArgs e)
{
using (var context = new MHC_CoopEntities())
{
var category = new Category { CategoryID = 2 };
context.Categories.Attach(category);
InventList product = new InventList
{
InventCategory = category,
ItemName = "Del Monte Fit & Right Pineapple 330ml",
UnitQty = 48,
UnitPrice = (decimal) 20.85
};
context.AddToInventLists(product);
context.SaveChanges();
} // <- context gets disposed here at the end of the using block
}