为什么映射一个对象PK破坏ExpressMapper?

时间:2017-05-24 18:36:52

标签: asp.net-mvc generics primary-key express-mapper

尝试实施基于an article by Chris Pratt的通用存储库,该存储库使用object作为Id(PK)。

一切都很好,直到我用ExpressMapper尝试.Map()其中一个对象。

下面有更多代码。但基本上,当我尝试这样做时:

var dataModel = postedModel.Map(new ExampleDataModel());

它给了我:

  

没有为此对象定义无参数构造函数。

当我将Id的{​​{1}}属性更改为ExampleDataModelstring时,它可以正常工作。

我已经用Google搜索了一下。我没有看到任何明显的东西,但我有点超出我的深度。我想知道:

  • 造成这种情况的原因是什么?

  • 我可以以某种方式解决这个问题吗?

我想继续使用对象PK和ExpressMapper,因为它们都适合我的项目。

int

2 个答案:

答案 0 :(得分:2)

当您执行new ExampleDataModel()时,您正试图使用​​无参数构造函数初始化ExampleDataModel的实例,但是看着您的课程,您没有一个,那个&#39}为什么你要

No parameterless constructor defined for this object.

你应该添加一个无参数构造函数, 看起来像这样

ExampleDataModel()
{
//init object 
}

虽然我不确定你想如何初始化你的对象,所以我不确定你的构造函数应该如何。

答案 1 :(得分:2)

更改你的ExampleDataModel类,我没有看到Id属性,你如何返回this.Id没有任何参考,你还需要一个字符串Id属性IDataModel<string>强迫你我希望这个帮助:

 public class ExampleDataModel : IDataModel, IDataModel<string>
    {
        public string Id { get; set; }

        object IDataModel.Id
        {
            get { return this.Id; }
        }

        public virtual string SomeProperty { get; set; }



        // etc.
    }