モデルにデータエンティティをマップするためにExpressmapperを使用しようとしています。ExpressMapper/EntityFreamework - このオブジェクトに対して定義されたパラメータのないコンストラクタはありません
エンティティをモデルに直接マッピングすると(両方が同じプロパティを持つ)、うまくいきます。
しかし、私はモデルにリンクされているエンティティをマッピングするならば、私はエラー
There was an error: System.MissingMethodException: No
parameterless constructor defined for this object.
データベースの構造を取得しています:
ExpressMapper登録:次のように呼び出されます
Mapper.Register<DiscountDaysOfWeek, DiscountDaysOfWeekModel>()
.Member(dest => dest.DiscountDayId, src => src.DiscountDayId)
.Member(dest => dest.DiscountDaysOfWeekId, src => src.DiscountDaysOfWeekId)
.Member(dest => dest.DiscountId, src => src.DiscountId)
.Member(dest => dest.Discountday, src => src.DiscountDay.Day);
を:
var disDays = discs.SelectMany(x => x.DiscountDaysOfWeeks)
.Map<IQueryable<DiscountDaysOfWeek>, IQueryable<DiscountDaysOfWeekModel>>();
呼び出し時にエラーメッセージが表示される。
DiscountDaysOfWeekModel:(EFによって生成される)
public class DiscountDaysOfWeekModel
{
public int DiscountDaysOfWeekId { get; set; }
public int DiscountId { get; set; }
public int DiscountDayId { get; set; }
public string Discountday { get; set; }
}
DiscountDayOfWeek
public partial class DiscountDaysOfWeek
{
public int DiscountDaysOfWeekId { get; set; }
public int DiscountId { get; set; }
public int DiscountDayId { get; set; }
public virtual DiscountDay DiscountDay { get; set; }
public virtual Discount Discount { get; set; }
}
(EFによって生成される)DiscountDay一作業
public partial class DiscountDay
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public DiscountDay()
{
this.DiscountDaysOfWeeks = new HashSet<DiscountDaysOfWeek>();
}
public int DiscountDayId { get; set; }
public string Day { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<DiscountDaysOfWeek> DiscountDaysOfWeeks { get; set; }
}
サンプル:以下の作業サンプルでモデルとエンティティは同じプロパティを持っています
Mapper.Register<DiscountPreventedPriceEnding, DiscountPreventedPriceEndingModel>();
var execPriceEndings = discs.SelectMany(x => x.DiscountPreventedPriceEndings)
.Map<IQueryable<DiscountPreventedPriceEnding>, IQueryable<DiscountPreventedPriceEndingModel>>();
ご協力いただければ幸いです。
ありがとうございます!
この行は動作しません。マップ、IQueryable >(); IQueryableをマップできるかどうかの例を示してください。それをICollectionに変更できますか? –
DiscountDaysOfWeekModelにはパラメータのないコンストラクタがありますか?関係するクラスを表示する。 –
@SteveGreeneこんにちはスティーブ、私はクラスのコードを追加しました – Rocky