您的位置:程序门 -> .net技术 -> c#



无法将类型“ibatisnet.datamapper.isqlmapper”隐式转换为“ibatisnet.datamapper.sqlmapper”。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


无法将类型“ibatisnet.datamapper.isqlmapper”隐式转换为“ibatisnet.datamapper.sqlmapper”。[已结贴,结贴人:a_sha]
发表于:2007-02-05 11:32:18 楼主
用editplus整理编辑完ibatisnet官网的例子tutorial-1.2.1,使用ibatisnet.datamapper-bin-1.5.1类库。编译命令如下:
-----------------------------------------------------
csc   /r:../bin/ibatisnet.datamapper.dll   /r:../bin/nunit.framework.dll   /r:../bin/ibatisnet.common.dll     /target:library   /out:ibatistutorial.model.dll   *.cs
-------------------------------------------------------
错误内容:
------------------------------------------------------

无法将类型“ibatisnet.datamapper.isqlmapper”隐式转换为“ibatisnet.datamapper.sqlmapper”。
存在一个显式转换(是否缺少强制转换?)

---------------------------------------------------------
源码如下:

helper.cs
---------------------------------------------
using   ibatisnet.datamapper;

namespace   ibatistutorial.model
{
///   <summary>
///   base   class   for   helper   objects   (*helper).  
///   provides   shared   utility   methods.
///   </summary>
public   abstract   class   helper
{
public   sqlmapper   mapper   ()
{
return   ibatisnet.datamapper.mapper.instance   ();
}
}
}
------------------------------------
  personhelper.cs
------------------------------------
using   system.collections;

namespace   ibatistutorial.model
{
///   <summary>
///   helper   class   for   person   entities.
///   </summary>
public   class   personhelper   :   helper
{
public   person   select   (int   id)
{
return   (person)   mapper   ().queryforobject   ( "select ",   id);
}

public   ilist   selectall   ()
{
return   mapper   ().queryforlist   ( "select ",   null);
}

public   int   insert   (person   person)
{
mapper   ().insert   ( "insert ",   person);
//   insert   is   designed   so   that   it   can   return   the   new   key
//   but   we   are   not   utilizing   that   feature   here
return   1;
}

public   int   update   (person   person)
{
return   mapper   ().update   ( "update ",   person);
}

public   int   delete   (int   id)
{
return   mapper   ().delete   ( "delete ",   id);
}

}
}
------------------------------------
helpers.cs
------------------------------------
namespace   ibatistutorial.model
{
///   <summary>
///   singleton   "controller "   for   helper   classes.
///   </summary>
public   class   helpers
{
private   static   volatile   personhelper   _personhelper   =   null;

public   static   personhelper   person   ()
{
if   (_personhelper   ==   null)
{
lock   (typeof   (personhelper))
{
if   (_personhelper   ==   null)   //   double-check
_personhelper   =   new   personhelper   ();
}
}
return   _personhelper;
}
}
}
------------------------------------
person.cs
------------------------------------
using   system;

namespace   ibatistutorial.model
{

///   <summary>
///   business   object   representing   a   person  
///   entity   in   our   problem   domain.  
///   </summary>
public   class   person
{
/*
private   string   _property;
public   string   property
{
get   {   return   _property;   }
set   {   _property   =   value;   }
}
*/

private   int   _id;
public   int   id
{
get   {   return   _id;   }
set   {   _id   =   value;   }
}

private   string   _firstname;
public   string   firstname
{
get   {   return   _firstname;   }
set   {   _firstname   =   value;   }
}

private   string   _lastname;
public   string   lastname
{
get   {   return   _lastname;   }
set   {   _lastname   =   value;   }
}

private   datetime   _birthdate;
public   datetime   birthdate
{
get   {   return   _birthdate;   }
set   {   _birthdate   =   value;   }
}

private   double   _weightinkilograms;
public   double   weightinkilograms
{
get   {   return   _weightinkilograms;   }
set   {   _weightinkilograms   =   value;   }
}

private   double   _heightinmeters;
public   double   heightinmeters
{
get   {   return   _heightinmeters;   }
set   {   _heightinmeters   =   value;   }
}

}
}
------------------------------------
请各位大虾帮帮忙。小弟感激不尽!
------------------------------------
------------------------------------

发表于:2007-02-05 12:47:401楼 得分:0
帮lz顶
   
http://user.qzone.qq.com/31767702
发表于:2007-02-05 14:03:132楼 得分:20
return   ibatisnet.datamapper.mapper.instance   ();
应该是这里的问题吧。mapper   属性是sqlmapper类型的,你查一下   instance   ()返回的类型,应该是一个接口类型isqlmapper,把这句改成:
return   (sqlmapper)ibatisnet.datamapper.mapper.instance   ();
发表于:2007-02-05 14:41:063楼 得分:0
bestshl(快乐的coder)   ,异常感谢,就是那个问题,已通过编译。
发表于:2007-02-05 16:42:554楼 得分:0
新问题如下:恕小弟愚笨,谁帮我看看,解决后追加分!
--------------------------------------------------------------------------------
“/webview”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未将对象引用设置到对象的实例。  
说明:   执行当前   web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   system.nullreferenceexception:   未将对象引用设置到对象的实例。

源错误:  


行   22:   private   void   list_load   ()
行   23:   {
行   24:                           dglist.datasource   =   helpers.person().selectall();
行   25:   dglist.databind   ();
行   26:   }
 

源文件:   d:\zyt_web\donet\tutorial\webview\forms\person.aspx.cs         行:   24  

堆栈跟踪:  


[nullreferenceexception:   未将对象引用设置到对象的实例。]
      ibatisnet.datamapper.configuration.domsqlmapbuilder.parseglobalproperties()   +96
      ibatisnet.datamapper.configuration.domsqlmapbuilder.initialize()   +258
      ibatisnet.datamapper.configuration.domsqlmapbuilder.build(xmldocument   document,   datasource   datasource,   boolean   useconfigfilewatcher,   boolean   iscallfromdao)   +234

[configurationexception:  
-   the   error   occurred   while   validate   sqlmap   config.]
      ibatisnet.datamapper.configuration.domsqlmapbuilder.build(xmldocument   document,   datasource   datasource,   boolean   useconfigfilewatcher,   boolean   iscallfromdao)   +288
      ibatisnet.datamapper.configuration.domsqlmapbuilder.configureandwatch(string   resource,   configurehandler   configuredelegate)   +209
      ibatisnet.datamapper.mapper.initmapper()   +71
      ibatisnet.datamapper.mapper.instance()   +62
      ibatistutorial.model.helper.mapper()   +6
      ibatistutorial.model.personhelper.selectall()   +4
      ibatistutorial.web.forms.personpage.list_load()   in   d:\zyt_web\donet\tutorial\webview\forms\person.aspx.cs:24
      ibatistutorial.web.forms.personpage.page_load(object   sender,   eventargs   e)   in   d:\zyt_web\donet\tutorial\webview\forms\person.aspx.cs:88
      system.web.ui.control.onload(eventargs   e)   +80
      system.web.ui.control.loadrecursive()   +49
      system.web.ui.page.processrequestmain(boolean   includestagesbeforeasyncpoint,   boolean   includestagesafterasyncpoint)   +3745

 


--------------------------------------------------------------------------------
版本信息:   microsoft   .net   framework   版本:2.0.50727.42;   asp.net   版本:2.0.50727.42  
---------------------------------------------------------------------------------


配置文件:

sqlmap.config   位于根目录
---------------------------------------------------------------------------------
<?xml   version= "1.0 "   encoding= "utf-8 "   ?>
<sqlmapconfig   xmlns:xsi= "http://www.w3.org/2001/xmlschema-instance "   xsi:nonamespaceschemalocation= "sqlmapconfig.xsd ">

  &nbsp;     <properties   resource= "properties.config "/>
  &nbsp;  
<settings>
<setting   usestatementnamespaces= "false "/>
<setting   cachemodelsenabled= "true "/>
</settings>

<database>
<provider   name= "${provider} "/>
<datasource   name= "ibatistutorial "     connectionstring= "${connectionstring} "/>
</database>

<sqlmaps>
<sqlmap   resource= "${root}map/personhelper.xml "/>
</sqlmaps>

</sqlmapconfig>
------------------------------------------------------------------------------------
properties.config   位于根目录
------------------------------------------------------------------------------------
<?xml   version= "1.0 "   encoding= "utf-8 "   ?>  
<settings>
<!--       user   application   and   configured   property   settings   go   here.-->
<!--       example:   <add   key= "settingname "   value= "settingvalue "/>   -->
<add   key= "provider "   value= "oledb1.1 "   />
<add  
key= "connectionstring "  
value= "provider=microsoft.jet.oledb.4.0;data   source=data/ibatistutorial.mdb "   />
<add   key= "root "   value= "./ "   />
</settings>
---------------------------------------------------------------------------------

personhelper.xml   位于根目录下   map文件夹

---------------------------------------------------------------------------------
<?xml   version= "1.0 "   encoding= "utf-8 "   ?>  

<sqlmap  
namespace= "person "  
xmlns:xsi= "http://www.w3.org/2001/xmlschema-instance "  
xsi:nonamespaceschemalocation= "sqlmap.xsd ">

<!--   xml   "behind "   document   for   the   people   service   class.   -->

<alias>
<typealias   alias= "person "   type= "ibatistutorial.model.person,   ibatistutorial.model "   />
</alias>

<resultmaps>
<resultmap   id= "selectresult "   class= "person ">
<result   property= "id "   column= "per_id "   />
<result   property= "firstname "   column= "per_first_name "   />
<result   property= "lastname "   column= "per_last_name "   />
<result   property= "birthdate "   column= "per_birth_date "   />
<result   property= "weightinkilograms "   column= "per_weight_kg "   />
<result   property= "heightinmeters "   column= "per_height_m "   />
</resultmap>
</resultmaps>

<statements>

<select   id= "select "   parameterclass= "int "   resultmap= "selectresult ">
select
per_id,
per_first_name,
per_last_name,
per_birth_date,
per_weight_kg,
per_height_m
from   person
<dynamic   prepend= "where ">
<isparameterpresent>
per_id   =   #value#
</isparameterpresent>
</dynamic>
</select>

<insert   id= "insert "   parameterclass= "person ">
insert   into   person  
(per_id,   per_first_name,   per_last_name,
per_birth_date,   per_weight_kg,   per_height_m)
values  
(#id#,   #firstname#,   #lastname#,  
#birthdate#,   #weightinkilograms#,   #heightinmeters#)
</insert>

<update   id= "update "   parameterclass= "person ">
update   person   set
per_first_name   =   #firstname#,
per_last_name   =   #lastname#,  
per_birth_date   =   #birthdate#,
per_weight_kg   =   #weightinkilograms#,
per_height_m   =   #heightinmeters#
where   per_id   =   #id#
        </update>

        <delete   id= "delete "   parameterclass= "int ">
delete   from   person
                where   per_id   =   #value#
        </delete>
       
</statements>

</sqlmap>
----------------------------------------------------------------------------------



快速检索

最新资讯
热门点击