Scut 在启动时有一个自动根据代码中数据类型检查数据库字段的功能,要如何使用呢?

脚本引擎动态加载 ModelAssembly:

ScriptEngine.cs - InitScriptRuntimeScope:

EntitySchemaSet.LoadAssembly(scope.ModelAssembly);

EntitySchemaSet.cs - LoadAssembly:

var types = assembly.GetTypes().Where(p => p.GetCustomAttributes(typeof(EntityTableAttribute), false).Count() > ).ToList();
foreach (var type in types)
{
  InitSchema(type);
}

  可以得知,需要被检查数据库字段的,必须是 Model 文件夹下的带有“EntityTable”属性的结构。

EntitySchemaSet.cs - InitSchema:PropertyInfo[] propertyList = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);SchemaColumn column;

int number = ;
foreach (PropertyInfo property in propertyList)
{
   ...
  var entityField = FindAttribute<EntityFieldAttribute>(property.GetCustomAttributes(false));

    if (entityField != null)

    ...
}
... ...
CheckTableSchema(schema);

  可以得知,要与数据库进行匹配检查的字段必须带有“EntityField”。

EntitySchemaSet.cs - CheckTableSchema:

if (dbprovider.CheckTable(tableName, out columns))
{
  ModifyTableSchema(schema, dbprovider, tableName, columns);
}
else
{
  CreateTableSchema(schema, dbprovider, tableName);
}

  对比 EntityTable 的 Column 与 数据库表中的 Column,有差异进行相应修改,如果没有该表则要建表。

  说白了,只要配置正确了 sqlconnetion,连建表都帮你省了...

  上一篇的 EntityChangeEvent 则是省了数据 Save ... 真是傻瓜式开发了。

Scut 进阶:Schema 自动检测的更多相关文章

  1. 【译】Spring 4 自动装配、自动检测、组件扫描示例

    前言 译文链接:http://websystique.com/spring/spring-auto-detection-autowire-component-scanning-example-with ...

  2. spring实战五之Bean的自动检测

    在spring实战四中,使用在Spring中增加<context:annotation-config>的方式告诉Spring,我们打算使用基于注解的自动装配,希望Spring特殊对待我们所 ...

  3. Spring入门(7)-自动检测Bean

    Spring入门(7)-自动检测Bean 本文介绍如何自动检测Bean. 0. 目录 使用component-scan自动扫描 为自动检测标注Bean 1. 使用component-scan自动扫描 ...

  4. Spring学习笔记--自动检测

    要使用自动检测,我们需要用到<context:annotation-scan>标签.<context:annotation-scan>元素除了完成与<context:an ...

  5. spring的自动装配Bean与自动检测Bean

    spring可以通过编写XML来配置Bean,也可以通过使用spring的注解来装配Bean. 1.自动装配与自动检测: 自动装配:让spring自动识别如何装配bean的依赖关系,减少对<pr ...

  6. iOS自动检测版本更新

    虽然苹果官方是不允许应用自动检测更新,提示用户下载,因为苹果会提示你有多少个软件需要更新,但是有的时候提示用户一下有新版还是很有必要的. 首先说一下原理: 每个上架的苹果应用程序,都会有一个应用程序的 ...

  7. Elasticsearch 动态映射——自动检测

    ES中有一个非常重要的特性——动态映射,即索引文档前不需要创建索引.类型等信息,在索引的同时会自动完成索引.类型.映射的创建. 那么什么是映射呢?映射就是描述字段的类型.如何进行分析.如何进行索引等内 ...

  8. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill

    paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:ht ...

  9. IOS开发中如何实现自动检测更新APP

    自动检测更新实现逻辑: 先上github地址:https://github.com/wolfhous/HSUpdateApp 1,获取当前项目APP版本号 2,拿到AppStore项目版本号 3,对比 ...

随机推荐

  1. Jenkins 八: 构建Git项目

    1. 安装git. http://git-scm.com/download/win 下载之后一步步安装即可.   2. 安装插件. 打开"系统管理" –> "管理插 ...

  2. [置顶] 【Git入门之十四】Git GUI

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374495 文章都快写完了,Git GUI才浮出水面,很多人要骂我,这么方 ...

  3. select.poll,epoll的区别与应用

    先讲讲同步I/O的五大模型 阻塞式I/O, 非阻塞式I/O, I/O复用,信号驱动I/O(SIGIO),异步I/O模型 而select/poll/epoll属于I/O复用模型 select函数 该函数 ...

  4. 【bzoj2594】[Wc2006]水管局长数据加强版

    真是神题 当时调了几天没调出来 后来没管了 当时把fread去掉就TLE,加上就RE 一直在底下跟网上的程序拍,尝试各种优化常数都没用 拍出几组不一样的,发现我是对的,醉了,网上那个是怎么过的 记一下 ...

  5. 《开源分享2》:《开源框架实战宝典电子书V1.0.0》完整版!

    经过一个多月的整理,<J2EE开源框架实战宝典>--Tiny文档PDF电子书開始发放,共同拥有将近600页.为喜爱Tiny.热爱Java开源框架的朋友提供更加体贴的文档服务! 下载地址:h ...

  6. 边走边学Nodejs (基础入门篇)

    1.什么是Node.js Nodejs ,或者node, 是一个基于ChromeJavaScript执行时建立的平台.用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非堵 ...

  7. Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.(转)

    1.程序运行后异常显示: 解决方案:在项目上点击右键->properties->Java Build Path, remove掉Android Dependences即可

  8. python之 sys.exit() os._exit() exit() quit()的简单使用

    python之sys.exit() os._exit() exit() quit()的简单使用 1>sys.exit() >>> import sys>>> ...

  9. ASP.NET 实现上一篇文章 下一篇文章

    select top 1 * from job_hrnews where newsid>162  --下一篇 select top 1 * from job_hrnews where newsi ...

  10. js 实现关键词球状旋转效果

    效果图 html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...