尝试基于 an article by Chris Pratt 实现通用存储库使用 object
如 Id
(PK)。
一切都很好,直到我尝试 .Map()
这些对象之一带有 ExpressMapper .
更多代码如下。但本质上,当我尝试这样做时:
var dataModel = postedModel.Map(new ExampleDataModel());
它给了我:
No parameterless constructor defined for this object.
当我更改
Id
ExampleDataModel
的属性(property)到 string
或 int
它工作正常。我已经谷歌搜索了。我没有看到任何明显的东西,但我有点超出我的深度。我想知道:
如果可能的话,我想继续使用对象 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/