だから私はいくつかの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(アプリケーション)を削除したい場合、セットアップには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;
これはちょっと紛らわしいです。List<entities>
リストを含むエンティティを削除すると、を定義するとさらに悪化します。リスト内のエンティティに関係があると文句を言いますが、これらのエンティティでカスケード削除を有効にするにはどうすればよいですか?
public class Blog: DbEntity
{
public string Name {get;set;}
public virtual Member {get;set;}
public List<Comment> Comments {get;set;}
}
たくさんの質問のように思えますが、エンティティフレームワークの1つのトピックを中心に展開しています。私の質問に答えてくれてありがとう。