0

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

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 还不是角色。

4

0 回答 0