技术备忘录(Linux Mono Linq ASP.NET)
环境: openSUSE linux Mono2.4 MonoDevelop2.0 DBLinq2007 0.18 Navicat lite 8.2.16
1)关于mysql存取中文字符:创建表时可能存放中文的字段的Character set应设置为:utf8 (UTF-8 Unicode)或 为中文兼容的字符集:
big5 | Big5 Traditional Chinese
gb2312 | GB2312 Simplified Chinese
gbk | GBK Simplified Chinese
2)关于DBLinq2007 0.18:
DBLinq2007其文件build\DbMetal.exe用于生成定义强类的数据集的cs文件.
其参数如下:
/provider:<provider> 指定数据提供者. 可能是Ingres, MySql,
Oracle, OracleODP, PostgreSql 或 Sqlite.
/server:<name> 数据库服务器的地址或其机器名.
/user:<name> 登录数据库的用户名.
/password:<password> 登录数据库的口令.
/database:<database> 数据库名称
/namespace:<namespace> 指定输出强类数据集的命令空间
/sprocs 提取存储过程.
/code:<file> 输出c#源代码. 不能同 /dbml 选项一起使用.
前提mysql server服务器(localhost)存在一个test数据库,test存在User表及Deaprtment表.(用户名mysql口令1234)
mono DbMetal.exe /provider:MySql /server:localhost /user:mysql /password:1234 /database:test /namespace:mysqllinq /sprocs /code:testdb.cs
查看命令运行结果有没有错误产生,可据提示排错.如果没有错误.则会在当前目录产生一个名为testdb.cs的文件.
生成的cs文件含有如下命名空间引用;
using DbLinq.Linq;
using DbLinq.Linq.Mapping;
请删除using DbLinq.Linq;并把using DbLinq.Linq.Mapping;改为using DbLinq.Data.Linq.Mapping;
保存后并把生成的cs文件添加项目中。
在MonoDevelop2.0中使用DBLinq 访问mysql数据库需要引用如下程序集:
System.Core.dll
DbLinq.dll
System.Data.Linq.dll
DbLinq.MySql.dll
MySql.Data.dll
System.Data.dll
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using DbLinq.MySql;
using mysqllinq;
using System.Data;
using System.Linq;
using DbLinq.Factory;
using DbLinq.Logging;
using MySql.Data.MySqlClient;
namespace webapp0
{
public partial class Default : System.Web.UI.Page
{
private static mysqllinq.Test testdb;
protected void Page_Load(object sender,EventArgs args)
{
if(testdb==null)
{
button1.Text = "开始实例化:testdb";
testdb=new mysqllinq.Test(new MySqlConnection( "server=localhost;user id=mysql; password=maling; database=test"));
}
else
{
button1.Text = "已实例化:testdb";
}
}
public virtual void button1Clicked(object sender, EventArgs e)
{
var user=testdb.User.Single(u=>u.UserID=="yanxiang");
button1.Text=user.UserName;
}
}
}