私の問題は、Automapperを使用してドメインモデルを論理モデルにマッピングする際のループナビゲーションプロパティです。オートマッパーを使用してドメインモデルを論理モデルにマッピング
public class Customer
{
public long CustomerId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Payment> Payments { get; set; }
}
public class Payment
{
public long PaymentId { get; set; }
public virtual Customer Customer { get; set; }
}
そして、ここで論理モデル::
public class CustomerModel
{
public long CustomerId { get; set; }
public string Name { get; set; }
public IEnumerable<PaymentModel> Payments { get; set; }
}
public class PaymentModel
{
public long PaymentId { get; set; }
public CustomerModel Customer { get; set; }
}
そして今、ここで
は、ドメインモデルの例があります。私はこのようなautomapper使用してマッピングを実行する場合:
public IQueryable<CustomerModel> GetCustomers()
{
return _db.Customer.ProjectTo<CustomerModel>();
}
}
私はSystem.StackOverflowExceptionを取得しています。私はそれがナビゲーションのループのためだと理解しています。 AutomapperがICollection PaymentsをIEnumerable Paymentsにマッピングしようとしていますが、PaymentModelクラスのCustomerModelクラスへのナビゲーションがループしています。 CustomerModelへのナビゲーションプロパティなしで2番目の論理モデル(クラスPayment2)私は別のマッピングを実行する必要があります。ナビゲーションプロパティを持つ50のドメインモデルでは、迷惑になるでしょう。
もっと簡単で高速なソリューションがありますか?
あなたはドメインモデルを生成するエンティティフレームワークを使用していますか? –
おかしい、私はAutoMapperと同様のDTOを問題なくプロジェクトすることができます。最大深度または遅延ロードが無効のトリックはありません。問題は他のどこかにあるように見えます。 –