使用达梦数据库

ClownFish已支持达梦数据库,具体使用方法可参考本文档。


1,引用 NuGet 包

在csproj项目文件中添加

<PackageReference Include="dmdbms.DmProvider" Version="1.1.3" />
<PackageReference Include="ClownFish.net" Version="9.24.1129.4" />



2,配置数据库连接

在ClownFish.App.config中添加:

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

    <dbConfigs>
        <add name="dm1" dbType="DaMeng" server="DamengHost" port="5237" database="MyNorthwind" uid="SYSDBA" pwd="xxxxxxx" />
    </dbConfigs>
</configuration>

说明:也可以在配置服务中注册连接。



3,CRUD开发

这个过程与使用 SQLSERVER/MySQL/PostgreSQL 没有什么差别。
以下是实际的测试代码片段:

using DbContext db = DbContext.Create("dm1");

var args = new { CategoryID = 1 };

List<Product> list = db.CPQuery.Create("select * from Products where CategoryID = @CategoryID", args).ToList<Product>();

Console.WriteLine(list.ToXml());
using DbContext db = DbContext.Create("dm1");

db.CPQuery.Create("truncate table TestGuid").ExecuteNonQuery();

string insertSQL = "insert into TestGuid(RowGuid, IntValue) values(@RowGuid, @IntValue)";
for( int i = 0; i < 1000; i++ ) {

    var args = new {
        RowGuid = db.NewSeqGuid(),
        IntValue = i + 1
    };

    db.CPQuery.Create(insertSQL, args).ExecuteNonQuery();
}
using DbContext db = DbContext.Create("dm1");

Product product = new();
product.LoadDefaultValues();

// insert
int newId = (int)product.Insert(db, true);

// query
Product product2 = db.GetByKey<Product>(newId);
Assert.IsNotNull(product2);


Product product3 = new Product{ ... };
// update
int effect = db.Update(product3);
Assert.AreEqual(1, effect);


Product product4 = db.GetByKey<Product>(newId);
Assert.IsNotNull(product4);


// delete
db.Delete<Product>(newId);

Product product5 = db.GetByKey<Product>(newId);
Assert.IsNull(product5);