在Sharepoint中,我有一个产品列表和一个类别列表。我正在尝试从Web表单创建一个新的(产品)项目。产品列表有一个类别查找列,当我尝试创建一个新的Product实例时,我在插入时得到一个空引用错误。我读了一篇文章,说明需要使用非查找列值创建项目,检索新项目的id,然后将值插入查阅列,但我得到相同的错误。任何人都可以帮助正确的方法来做到这一点吗?
ProductDevelopmentDataContext dc = new ProductDevelopmentDataContext(SPContext.Current.Web.Url);
EntityList<ProductItem> Product = dc.GetList<ProductItem>("Product");
ProductItem newProduct = new ProductItem();
newProduct.Title = title.Text;
newProduct.ProductDescription = description.Text;
dc.Product.InsertOnSubmit(newProduct);
dc.SubmitChanges();
var newProductID = (int)newProduct.Id;
ProductDevelopmentDataContext newdc = new ProductDevelopmentDataContext(SPContext.Current.Web.Url);
newProduct = (from p
in newdc.Product
where p.Id == newProductID
select newProduct).Single();
newProduct.CategoryName.Title = category.Text;
newdc.Product.InsertOnSubmit(newProduct);
newdc.SubmitChanges();
答案 0 :(得分:0)
这是因为newProduct.CategoryName
为空。不是分配查找标题,而是分配对象本身:
newProduct.CategoryName = category
然后您需要做的就是SubmitChanges()
。再次呼叫InsertOnSubmit
将创建新记录。
此外,您不需要创建两个ProductDevelopmentDataContext
对象,只需对所有命令使用dc。
编辑:获取CategoryItem对象:
newProduct.CategoryName = (from c
in dc.Categories
where c.Title == category
select new c).First();