EF - 多对多检测脏插入

时间:2013-11-10 12:23:42

标签: c# entity-framework asp.net-mvc-4 entity-framework-4 fluent

我有一个像下面这样的实体

public class Property {
   public string PropertyID {get;set;}
   public virtual ICollection<Property> IncludedProperties {get;set;}
   public string value {get;set;}
}

也就是说,属性具有值,它还可以包含其他属性。我想限制用户,以便只有现有属性可以包含在IncludedProperties列表中。在EF中开箱即用,我看到的行为是,如果我向IncludedProperties添加一个尚未创建的新属性,EF会为该新属性创建一个新行并添加到该集合中。但是我想阻止用户这样做。我该怎么办呢?首先插入新属性然后将其包含在其他属性中就可以了,这是正确的方法。

修改: 一个简单的测试用例

        var property1=new Propert {PropertyID = "P1"};
        uow.PropertyRepository.Insert(property1);
        uow.Save();
        var property2= new Propert  {PropertyID = "P2"};
        uow.PropertyRepository.Insert(property2);
        property2.IncludedProperties.Add(property1);
        property2.IncludedProperties.Add(new Propert {PropertyID = "P3"});
        uow.Save();

在这个测试用例中,我想要Save来引发异常,因为P3还不是一个角色。

0 个答案:

没有答案