0
我有兩個具有多對多關係的實體。當我使用Include()加載一個實體時,它會加載子項,並且還包括子項的子項。我不想要孫子女。防止包含實體的子對象的加載(停止自引用循環)
我關閉了懶加載:LazyLoadingEnabled = false;和我忽略自參照循環:我使用的是IUnitOfWork pattern(請參閱創建一個通用存儲庫),所以這樣加載實體
public class A
{
public int Id { get; set; }
public ICollection<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public ICollection<A> As { get; set; }
}
:
return unitOfWork.ARepository.Get(a => a.Id == Id, null, "Bs");
config.Formatters.JsonFormatter.SerializerSettings
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling
.Ignore;
爲了更好地解釋事
我找回像這樣的JSON:
[
{
"Id": 1,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 2,
"Bs": [
...
},
{
"Id": 2,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 1,
"Bs": [
...
傳遞自引用實體看起來非常浪費。有什麼辦法可以防止這種情況發生?