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