实体框架4代码优先 - 更改为null时不更新的虚拟属性

时间:2010-08-23 18:44:57

标签: entity-framework orm entity-framework-4 code-first

所以我的域名模型与此类似:

public class Product
{
    public virtual Tag Methodology { get; set; }
}

然后在webform项目中我更新它:

if (!string.IsNullOrWhiteSpace(ddlMethodology.SelectedValue))
    product.Methodology = TagRepo.GetTagById(int.Parse(ddlMethodology.SelectedValue));
else
    product.Methodology = null;

但是,当product.Methodology先前设置为某个对象并且我想将其更改为空时,这不会更新。即product.Methodology = null;行似乎没有按预期工作。

当我在调试器中运行它时,我发现有时它会起作用,有时它不会。在少量拔毛之后,我意识到这是由于实体框架在运行时为该属性创建的代理类型,并且当我在调试器中检查它时它正在工作。

所以为了解决这个问题,我创建了一个运行良好的hack :(注意:现在是一个else if

if (!string.IsNullOrWhiteSpace(ddlMethodology.SelectedValue))
    product.Methodology = TagRepo.GetTagById(int.Parse(ddlMethodology.SelectedValue));
else if (product.Methodology != null)
    product.Methodology = null;

所以我想我的问题是:

  • 我做错了吗?
  • 还有另一种方法可以记住每次都做黑客攻击吗?
  • 首先将CTP视为实体框架代码中的错误吗?

干杯,
查尔斯

0 个答案:

没有答案