在使用现有引用实体添加新实体时,EF 4.1会将现有引用实体插入到视图中

时间:2012-03-20 07:59:33

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

我遇到了一个奇怪的情况。

我有一个根实体(表),可以引用另一个实体(视图)

public class RootEntity
{
   public int Id {get; set;}

   public int SubEntityId {get; set;}

   public SubEntity SubEntity {get; set;}
}

public class SubEntity
{
   public int Id {get; set;}
}

当我只使用现有的SubEntityId设置RootEntity.SubEntityId时一切顺利。

但是,当我将Ref设置为如下

RootEntity.SubEntity = attachedSubEntity

无论出于何种原因,EF都试图将附加的SubEntity插入到视图中,我得到了这个

System.Data.SqlClient.SqlException (0x80131904): Cannot insert the value NULL into column '****', table '****'; column does not allow nulls. INSERT fails.

1 个答案:

答案 0 :(得分:0)

我发现了问题!已使用SubEntity选项获取AsNoTracking

我认为使用此选项可以解决“插入”问题,但实际上他是原因!

当我删除AsNoTracking时,一切顺利。

它仍然很奇怪,因为只有在使用UnitTesting(Nunit)时才会出现问题。但是使用WCF我没有遇到问题