asp.net-mvc - 为什么映射对象 PK 会破坏 ExpressMapper?

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

尝试基于 an article by Chris Pratt 实现通用存储库使用 objectId (PK)。

一切都很好,直到我尝试 .Map()这些对象之一带有 ExpressMapper .

更多代码如下。但本质上,当我尝试这样做时:

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

它给了我:

No parameterless constructor defined for this object.



当我更改 Id ExampleDataModel 的属性(property)到 stringint它工作正常。

我已经谷歌搜索了。我没有看到任何明显的东西,但我有点超出我的深度。我想知道:
  • 这是什么原因造成的?
  • 我可以以某种方式解决它吗?

  • 如果可能的话,我想继续使用对象 PK 和 ExpressMapper,因为它们都非常适合我的项目。
    public interface IDataModel
    {
        object Id { get; }  
    }
    
    public interface IDataModel<PKT> : IDataModel
    {
        new PKT Id { get; set; }
    }
    
    public abstract class DataModel<PKT> : IDataModel<PKT>
    {
        public PKT Id { get; set; }
        object IDataModel.Id
        {
            get { return this.Id; }
        }
    }
    
    
    
    public class ExampleDataModel : 
        DataModel<string>, 
        IDataModel<string>
    {
         public virtual string SomeProperty{ get; set; }
    
        // etc.
    }
    

    最佳答案

    当你在做 new ExampleDataModel() , 您正在尝试初始化 ExampleDataModel 的实例使用无参数构造函数,但看看你的类,你没有一个,这就是为什么你得到
    No parameterless constructor defined for this object.
    您应该添加一个无参数构造函数,
    看起来像这样

    ExampleDataModel()
    {
    //init object 
    }
    

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

    关于asp.net-mvc - 为什么映射对象 PK 会破坏 ExpressMapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166190/

    相关文章:

    c# - 托管到 iis 时无法访问打印机

    java - 在具有泛型方法的 Java 泛型中使用 'extends' 和 'super' 的问题

    java - 扩展通用抽象类并正确使用 Super

    postgresql - 将 SHA1 签名作为主键存储在 Postgresql 中

    java - 使用Java获取MySQL表中的所有主键

    asp.net-mvc - 尝试找出将 HTML 传递到另一个 HTTP 服务(Azure 云服务)的最佳方法

    asp.net-mvc - 有没有办法重命名 RequestVerificationToken cookie 名称?

    jquery - MVC4 中不引人注目的客户端验证不起作用

    java - 接口(interface)扩展了链表泛型上的接口(interface)

    database - 为什么使用 ORDER BY PRIMARY KEY 的完整 TADIR 选择比 INTO 排序表慢得多?