如何在新对象上加载属性?

时间:2012-06-26 12:50:25

标签: c# entity-framework entity-framework-4.1 ef-code-first

基本上,我有以下几点:

public class Product
{
public int ID {Get;Set;}
public string foo {Get;Set;}
public string bar {Get;Set;}
public virtual SubProduct subproduct{get;set;}
public int SubProductID{get;set;}
}

public class SubProduct
{
public int ID {Get;Set;}
public string foo {Get;Set;}
}

我有一个接受字符串并通过foo搜索的方法 -

var correctproduct = (db.product.SingleOrDefault(x => x.foo == my_string);

并且,如果它可以找到它,我使用correctproduct,但是,如果它不存在(通过if correctproduct==null检查,我创建一个新对象并执行.SaveChanges();

但是,我直接进入下一个与子产品互动的部分。我创建新对象的部分为subproduct分配了一个数值,但是,尝试展开,我得到Object reference not set to an instance of an object。下次运行时,它可以完美运行。

我知道我可以在哪里搜索id的子产品并直接将对象分配给subproduct属性,但是,我觉得这不是最好的方法。我也觉得我对SingleOrDefault的使用只是一个黑客,并且想知道我是否可以就最佳方式做出一些反馈?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码

objectProduct.subProduct = new SubProduct{ ID = id,foo = value };