这种绑定暂时支持单表,并且不支持主键自增长!保存,删除,查看,修改用框架现成的。

  1、先生成tb、bll、dal三个类。框架有生成工具,在debug文件里面有个叫CSFramework.Tools.ClassGenerator的应用程序。

tb类不需要修改什么,如下图:

数据库如果连接不成功,在debug文件里有个连接数据库的工具先连接一下。

  按照图中这样设置好之后,点击生成类。一种是静态类,一种是实体类。区别在于保存的时候有一段代码不一样。一般生成静态类就可以了。

复制生成的类名作为保存文件的名字。

bll图:

点击生成基础数据BLL代码

dal图:

  

2、把生成的文件放到对应的项目文件里面:

tb文件放到CSFramework3.Models里面

bll文件放到CSFramework3.Business里面

dal文件放到CSFramework3.Server.DataAccess里面
3、创建实现数据库接口的方法类。找到CSFramework3.Interfaces这个项目。创建一个类似  IBridge_demo 这样的接口类。里面创建几个方法。当然接口可以共用。

  如果业务需求一样,只是数据不一样就可以共用接口。只要创建实现接口类指向不同的查询类就可以了。我这里就创建新接口了。如果出现红色波浪线,右键看看是不是缺少引用。

代码例子:

public interface IBridge_demo
{
//模糊查询测试数据
DataTable SearchBy(string CustomerFrom, string CustomerTo, string Name, string Attribute);

//类别获取查询数据
DataTable GetCustomerByAttributeCodes(string attributeCodes, bool nameWithCode);

//模糊查询
DataTable FuzzySearch(string content);

//模糊查询
DataTable FuzzySearch(string attributeCodes, string content);
}

4、然后打开生成的BLL文件,加入这句代码:

public class blltest : bllBaseDataDict
{
private IBridge_Test _MyBridge; //桥接/策略接口

  注销这句//_DAL = new daldemo(Loginer.CurrentUser);//数据层的实例

换成

_DataDictBridge = BridgeFactory.CreateDataDictBridge(typeof(tb_demo));//由ORM自动查询DAL类
_MyBridge = this.CreateBridge();

加完引用还有报错暂时别管,因为这个时候还没有实现接口的方法。选择我们去实现接口的方法。

5、找到CSFramework3.Bridge这个项目,创建一个实现之前接口的实现类。(这次是创建类不是接口、窗口)类似  demo_IBridge 这样的类。

为了减少操作直接替换下面的引用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CSFramework3.Interfaces;
using CSFramework.Core;
using CSFramework.Common;
using System.Data;
using System.ServiceModel;
using CSFramework3.WebServiceReference;
using CSFramework3.Server.DataAccess.DAL_DataDict;
using CSFramework3.WebServiceReference.WCF_DataDictService;
using CSFramework3.Interfaces.Interfaces_Bridge;
using CSFramework3.Server.DataAccess;

//引用下面所有代码:

namespace CSFramework3.Bridge.DataDictModule
{
public class demo_IBridge
{
//数据层实例,实现桥接口IBridge_Document
private IBridge_demo _DAL_Demo = null;
//构造器
public ADODirect_demo()
{
_DAL_Demo = new daldemo(Loginer.CurrentUser);
}

//获取桥接功能实例
public IBridge_demo GetInstance()
{
return _DAL_Demo;
}
}
/// <summary>
/// 测试管理WebService桥接功能
/// </summary>
public class WebService_Demo : IBridge_demo
{

public WebService_Demo()
{
}

#region IBridge_demo 成员

public DataTable SearchBy(string CustomerFrom, string CustomerTo, string Name, string Attribute)
{
using (DataDictServiceClient client = SoapClientFactory.CreateDataDictClient())
{
byte[] loginTicket = WebServiceSecurity.EncryptLoginer(Loginer.CurrentUser);
byte[] receivedData = client.FuzzySearchCustomer(loginTicket, CustomerFrom, CustomerTo, Name, Attribute);
return ZipTools.DecompressionDataSet(receivedData).Tables[0];
}
}

public DataTable GetCustomerByAttributeCodes(string attributeCodes, bool nameWithCode)
{
using (DataDictServiceClient client = SoapClientFactory.CreateDataDictClient())
{
byte[] loginTicket = WebServiceSecurity.EncryptLoginer(Loginer.CurrentUser);
byte[] receivedData = client.GetCustomerByAttributeCodes(loginTicket, attributeCodes, nameWithCode);
return ZipTools.DecompressionDataSet(receivedData).Tables[0];
}
}

public DataTable FuzzySearch(string content)
{
using (DataDictServiceClient client = SoapClientFactory.CreateDataDictClient())
{
byte[] loginTicket = WebServiceSecurity.EncryptLoginer(Loginer.CurrentUser);
byte[] receivedData = client.FuzzySearchCustomerByContent(loginTicket, content);
return ZipTools.DecompressionDataSet(receivedData).Tables[0];
}
}

public DataTable FuzzySearch(string attributeCodes, string content)
{
using (DataDictServiceClient client = SoapClientFactory.CreateDataDictClient())
{
byte[] loginTicket = WebServiceSecurity.EncryptLoginer(Loginer.CurrentUser);
byte[] receivedData = client.FuzzySearchCustomerByAttributes(loginTicket, attributeCodes, content);
return ZipTools.DecompressionDataSet(receivedData).Tables[0];
}
}

#endregion
}
}

正常情况下代码中红色部分会报错,因为指向的dal类中还没有实现它的方法。下面我们去dal中实现它的方法。

6、找到CSFramework3.Server.DataAccess这个项目中的daldemo这个类打开,报错的地方右键添加引用。

在类中的这个地方加入红色代码:

//a、

[DefaultORM_UpdateMode(typeof(tb_demo), true)]
public class daldemo : dalBaseDataDict, IBridge_demo
{

//b、

return new GenerateSqlCmdByTableFields(ORM);
}
public DataTable SearchBy(string CustomerFrom, string CustomerTo, string Name, string Attribute)
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT * FROM demo WHERE name LIKE '%" + CustomerFrom + "%'");
sb.Append(" ORDER BY ID;");
SqlCommandBase cmd = SqlBuilder.BuildSqlCommandBase(sb.ToString());
return DataProvider.Instance.GetTable(_Loginer.DBName, cmd.SqlCommand, tb_demo.__TableName);
}
public DataTable GetCustomerByAttributeCodes(string attributeCodes, bool nameWithCode)
{
throw new NotImplementedException();
}
public DataTable FuzzySearch(string content)
{
throw new NotImplementedException();
}
public DataTable FuzzySearch(string attributeCodes, string content)
{
throw new NotImplementedException();
}

可以联系QQ:78474580 一起研究

关于C/S框架网单表绑定,查询的更多相关文章

  1. Django框架之单表操作

    一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...

  2. python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

    12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefaul ...

  3. Ajax省市区无刷新单表联动查询

    方法一: 在很多时候都需要用到无刷新级联查询,本文将以省市区的级联查询作为例子.注:此为单表三级联动 环境:Vistual Studio 2015 .MSSQL 1.首先下载AjaxControlTo ...

  4. MySQL--详细查询操作(单表记录查询、多表记录查询(连表查询)、子查询)

    一.单表查询 1.完整的语法顺序(可以不写完整,其次顺序要对) (不分组,且当前表使用聚合函数: 当前表为一组,显示统计结果 ) select distinct [*,查询字段1,查询字段2,表达式, ...

  5. MR案例:单表关联查询

    "单表关联"这个实例要求从给出的数据中寻找所关心的数据,它是对原始数据所包含信息的挖掘. 需求:实例中给出 child-parent(孩子—父母)表,要求输出 grandchild ...

  6. python开发mysql:表关系&单表简单查询

    一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...

  7. MySQL单表数据查询(DQL)

    数据准备工作: CREATE TABLE student( sid INT PRIMARY KEY AUTO_INCREMENT, sname ), age TINYINT, city ), scor ...

  8. 前端框架VUE----表单输入绑定

    vue的核心:声明式的指令和数据的双向绑定. 那么声明式的指令,已经给大家介绍完了.接下来我们来研究一下什么是数据的双向绑定? 另外,大家一定要知道vue的设计模式:MVVM M是Model的简写,V ...

  9. Django框架ORM单表删除表记录_模型层

    此方法依赖的表是之前创建的过的一张表 参考链接:https://www.cnblogs.com/apollo1616/p/9840354.html 1.删除方法就是delete(),它运行时立即删除对 ...

随机推荐

  1. 数据存储之HTTP Cookie

    Cookie (HTTP Cookie) 作用 HTTP本身是无状态的,客户端通过Cookie来存储会话信息 限制 cookie在性质上是绑定在特定域名下的 意思是说当设定了一个cookie之后,再给 ...

  2. Servlet--ServletContext接口

    Servlet--ServletContext接口 定义public interface ServletContext 定义了一个 Servlet 的环境对象,通过这个对象,Servlet 引擎向 S ...

  3. 珍爱生命,远离JS=>JS避坑记

    JavaScript避坑记 转载请注明源地址: http://www.cnblogs.com/funnyzpc/p/8407952.html 上图=> 有意思的漫画,不知大家看懂了没,这里我想说 ...

  4. 日常API之图灵聊天机器人

    机器人是什么?可以吃吗? 嗯,他可以和你聊天,不能吃哦. 首先需要到www.tuling123.com注册一只KEY,你才能调用机器人API哦 一.布局 (控制台程序可以跳过这一步)本文以WPF为示例 ...

  5. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](九)

    前言 童鞋们,大家好 我是专注.NET开发者社区建设的实践者Rector. 首先,为自己间隔了两个星期五再更新本系列文章找个不充分的理由:Rector最近工作,家庭的各种事务所致,希望大家谅解. 本文 ...

  6. WEB消息推送-原理篇

    这篇文章主要讲述B/S架构中服务器“推送”消息给浏览器.内容涉及ajax论询(polling),comet(streaming,long polling).后面会附上源代码. 最近在工作有这么一个需求 ...

  7. 豆瓣爬虫小记(lowB版)

    爬虫小记 学习玩python正则之后,想利用正则知识学学网络爬虫. 需求分析 按照自己平时浏览的网页,留意下哪个网页的信息对自己有价值,分析要爬取哪些网页信息.这里我先爬取简单的静态网页,豆瓣网经典电 ...

  8. ABP官方文档翻译 4.4 授权

    授权 介绍 关于IPermissionChecker 定义权限 检查权限 使用AbpAuthorize特性 AbpAuthorize特性注意点 抑制授权 使用IPermissionChecker 在R ...

  9. 为什么说http协议是无状态的?

    首先了解基本概念:什么是无状态,什么是无连接 无状态协议: 协议的状态是指下一次传输可以“记住”这次传输信息的能力. http是不会为了下一次连接而维护这次连接所传输的信息,为了保证服务器内存. 比如 ...

  10. 对把JDK源码的一些注解,笔记

    //对treeMap的红黑树理解注解. 2017.02.16 by 何锦彬 JDK,1.7.51 /** From CLR */ private void fixAfterInsertion(Entr ...