我有一个像下面这样的实体
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还不是一个角色。