Bra*_*don 5 c# mapping ibatis.net
我有这样的课
public SomeClass
{
private List<string> _strings = new List<string>();
public IEnumerable<string> Strings
{
{ get return _strings; }
}
}
Run Code Online (Sandbox Code Playgroud)
我如何为_strings做映射?
我试过这个,但它抱怨没有找到List typehandler,如果我将它作为一个对象映射它就不会抱怨.
<result property="_strings" column="value" />
Run Code Online (Sandbox Code Playgroud)
所以我搜索谷歌并发现了这个解决方法(最初是针对Java问题,不知道它是否可以在C#中工作)
<result property="_strings" resultMapping="someMapping.StringList"/>
<resultMap id="StringList" class="System.String">
<result property="" column="Value"/>
</resultMap>
Run Code Online (Sandbox Code Playgroud)
这至少让测试运行,它返回我的对象的其余部分,我的列表具有正确的条目数,除了它们都是空白的.
我认为问题是属性属性是空白的,但我不确定是什么意思去那里.(我也尝试使用'价值',但这也不起作用).这似乎应该更简单,我只是忽略了一些明显的东西.
谢谢.
使用IBatis的自动结果映射.这是Java中的解决方案,您可以轻松映射到C#.这是你的sql map:
<sqlMap namespace="Users">
<select id="names" resultClass="java.lang.String">
select first_name as firstName from user
</select>
<sqlMap>
然后你可以这样称呼它:
List<String> userNames = (List<String>)sqlMap.queryForList("Users.names");
因此,您不必创建具有一个属性的自定义类型.
由于没有找到解决方案,我只是采用了一种我并不特别自豪的方法。
我映射了一个除了字符串值之外没有其他属性的类。
public class StringValue
{
public String Name { get; set; }
}
<resultMap id="StringList" class="StringValue" >
<result property="Name" column="Value"/>
</resultMap>
Run Code Online (Sandbox Code Playgroud)
iBatis 似乎对此没有问题,只是映射到字符串集合。
| 归档时间: |
|
| 查看次数: |
28830 次 |
| 最近记录: |