假设我有一个具有5个属性的业务对象和一个返回4列的sproc,其中名称与这些属性中的4个匹配。对ExecuteSprocAccessor的调用将失败。有没有办法可以用属性标记第5个属性,例如,告诉EntLib忽略它?
答案 0 :(得分:1)
您可以在创建映射器时执行此操作。基本上,这样的事情:
var results = db.ExecuteSprocAccessor("some_sproc",
MapBuilder<MyTargetType>.MapAllProperties()
.DoNotMap("SomethingThatDoesntMatch")
.Build(),
param1, param2, param3);
这将按名称将所有参数与结果匹配,但不会将任何内容映射到属性SomethingThatDoesntMatch。
需要注意的事项:MapBuilder创建结果集映射器有点贵,并且不会自动缓存。如果你在循环中进行这个调用,它可能会很慢。我建议提前创建映射器并保持它,或者单独创建访问器并保持访问器。