浏览:2982008-04-01 13:38   来自tubo      :
谢谢你的回复,看来我的表达能力有问题,我需要的不是自定义的mapping。 刚才仔细检查了代码,发现配置文件写错了,修改正确之后,被忽略的目标属性的set没有被调用,和我预期的一样。再次感谢。 当然如果是关联对象,本来mapping就没有转换它,如果能够不写配置文件来忽略它,它的set方法也不被调用,那就最好了,我就不用写配置文件了。 :) 感谢NBear Team的工作,使我的工作变得轻松了。
楼主
  3个月前   阿不      :
你可以自定义配置,不对isLoaded属性进行赋值。
回复  1楼 回到顶楼 
  3个月前   tubo      :
isLoaded不是一个属性,只是一个内部的状态变量
回复  2楼 回到顶楼 
  3个月前   阿不      :
一样可以配置为不赋值。
回复  3楼 回到顶楼 
  3个月前   tubo      :
可能我描述的不是很清楚,贴一段示意代码:
private bool isParentLoaded = false;
private Role parent;
public Role Parent
{
get
{
if(!isParentLoaded && parent == null)
Parent = LazyLoadParent();
return parent;
}
set
{
isParentLoaded = true;
parent = value;
}
}
当用mapping进行转换的时候,Parent的set方法被调用了一次并赋值为null了,isParentLoaded也被设置为true了,那么在Parent的get方法中LazyLoadParent()将永远也不会被调用到了。
回复  4楼 回到顶楼 
  3个月前   阿不      :
像你这种情况,你可以自己实现ICustomObjectMemberMapping一个自定义映射对象,然后在配置文件中配置使用。这样就可以满足你的要求了。
因为我们不可能为了你这个特定场景来修改NBear.Mapping本身的实现,我们要照顾到大众用户的需求,具体你可以参数Test工程中的CustomUserToUser2类的使用,谢谢。
回复  5楼 回到顶楼 
  3个月前   tubo      :
谢谢你的回复,看来我的表达能力有问题,我需要的不是自定义的mapping。
刚才仔细检查了代码,发现配置文件写错了,修改正确之后,被忽略的目标属性的set没有被调用,和我预期的一样。再次感谢。

当然如果是关联对象,本来mapping就没有转换它,如果能够不写配置文件来忽略它,它的set方法也不被调用,那就最好了,我就不用写配置文件了。 :)

感谢NBear Team的工作,使我的工作变得轻松了。
回复  6楼 回到顶楼 

你还不是小组成员,加入小组以后才能发布新主题!
1 7945