所以我有一些 POCO 课程:
public class Device : DbEntity
{
public string DeviceName {get;set;}
}
public class AUT : DbEntity
{
public string ApplicationName {get;set;}
}
public class Setup : DeviceAppDbEntity
{
public bool Worked {get;set;}
}
public class DbEntity
{
public Guid ID {get;set;}
}
public class DeviceAppDbEntity : DbEntity
{
public virtual AUT ApplicationUnderTesting {get;set;}
public virtual Device DeviceUnderTesting {get;set;}
}
因此,如果我想删除一个 AUT(应用程序),那么我几乎肯定会得到一个错误,因为 Setup 有一个 App 的外键。有人告诉我,如果你添加
public class DeviceAppDbEntity : DbEntity
{
public virtual AUT ApplicationUnderTesting {get;set;}
public Guid ApplicationUnderTestingId {get;set;} // THIS LINE ADDED
public virtual Device DeviceUnderTesting {get;set;}
}
然后将启用级联删除。这个对吗?
当我现在访问设置时
_repository.Setups.FirstOrDefault(x => x.ID.Equals(setupID));
导航属性virtual AUT
&virtual Device
应该自动填写??会Guid ApplicationUnderTestingId
自动填写吗?
当我想保存我的Setup
实体时,我可以只填写 nav 属性吗?还是我也必须填写该Guid ApplicationUnderTestingId
字段,还是我做相反的事情并且只填写Guid ApplicationUnderTestingId
?
entityToSave.AUT = _repository.AUTs.FirstOrDefault(x => x.ID.Equals(vm.AppID));
或者
entityToSave.ApplicationUnderTestingId= vm.AppID;
entityToSave.AUT = _repository.AUTs.FirstOrDefault(x => x.ID.Equals(vm.AppID));
或者
entityToSave.ApplicationUnderTestingId= vm.AppID;
这有点令人困惑。当您定义 a 时情况会变得更糟List<entities>
,因为当您删除包含列表的实体时。它抱怨列表中的实体具有关系,您如何在这些实体上启用级联删除?
public class Blog: DbEntity
{
public string Name {get;set;}
public virtual Member {get;set;}
public List<Comment> Comments {get;set;}
}
我知道这似乎是很多问题,但它围绕实体框架中的一个主题。感谢您随时回答我的问题。