对于我的所有DAO对象,我都有一个要从中继承的基类型,但此成员在未定义时会进一步出错:
type BaseDAO() =
member v.ExecNonQuery2(conn)(sqlStr) =
let comm = new MySqlCommand(sqlStr, conn, CommandTimeout = 10)
comm.ExecuteNonQuery |> ignore
comm.Dispose |> ignore
我继承这种类型:
type CreateDatabase() =
inherit BaseDAO()
member private self.createDatabase(conn) =
self.ExecNonQuery2 conn "DROP DATABASE IF EXISTS restaurant"
这是我在交互式shell中运行脚本时看到的内容:
--> Referenced 'C:\Program Files\MySQL\MySQL Connector Net 6.2.3\Assemblies\MySql.Data.dll'
[Loading C:\Users\jblack\Documents\Visual Studio 2010\Projects\RestaurantService\RestaurantDAO\BaseDAO.fs]
namespace FSI_0106.RestaurantServiceDAO
type BaseDAO =
class
new : unit -> BaseDAO
member
ExecNonQuery2 : conn:MySql.Data.MySqlClient.MySqlConnection ->
sqlStr:string -> unit
member execNonQuery : sqlStr:string -> unit
member
execQuery : sqlStr:string *
selectFunc:(MySql.Data.MySqlClient.MySqlDataReader ->
'a list) -> 'a list
member f : x:obj -> string
member Conn : MySql.Data.MySqlClient.MySqlConnection
end
[Loading C:\Users\jblack\Documents\Visual Studio 2010\Projects\RestaurantService\RestaurantDAO\CreateDatabase.fs]
C:\Users\jblack\Documents\Visual Studio 2010\Projects\RestaurantService\RestaurantDAO\CreateDatabase.fs(56,14): error FS0039: The field, constructor or member 'ExecNonQuery2' is not defined
我很好奇自己做错了什么。
我尝试过不继承,只是实例化
BaseDAO
输入函数,但得到相同的错误。
我从这条路径开始,因为我有一个具有相同错误的属性,所以似乎在如何定义我的
巴斯岛
类型,但它编译时没有出错,这进一步使我对这个问题感到困惑。