.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(四)枚举类型的字段

我们通常有些int类型字段,通过不同的数字,表示不同的意思,为了让程序可读性更高、做UI的时候更加方便,用Enum表示字段值是个不错的东西。

例如,有个sex字段,int类型,表示性别,1是男,2是女,那么数据库里面的值就是1或者2了,但是,我们把这些数据显示给客户的时候,总是需要做一些转换,类似下面这样的代码

if(user.Sex == 1)
    alert("性别是男");
else if(user.Sex == 2)
    alert("性别是女");
    

总是要写这样的转换代码就是很浪费时间的事情,如果用Enum类型的值,就方便多了,下面来看看怎么做

首先,修改字段的属性

首先,sex字段必须是int类型,然后默认值为0,点击Enum属性的编辑框,在里面设置每一个枚举项的值,语法是C#语法,所以也可以这样写

未设置 = 0,
男 = 1,
女 = 男 << 1,
人妖 = 男 | 女

呵呵,人妖也可以哦,他既可以是男的,也可以是女的哦,这种做法,其实是把int用二进制的角度去看待,VC的朋友应该经常会用这种手法,所以,我们在数据库里面搜索“男”的数据,就不是where data.Sex == 男 这样写了哦,而是 where (data.Sex & 男) == 男 这样写才对,这样会把 男和人妖 都选择出来

好了,编译数据库dll,到代码里实际看看怎么读写这样的字段

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LinqTest1
{
    public partial class Form1 : Form
    {
        public Form1()
        {

                InitializeComponent();
        }

        class SysDB : Test.DB.TestDB
        {
            public SysDB()
                : base(@"data source=""F:\SqliteLinqTest\TestDB""", EntityDB.DatabaseType.Sqlite)
            {
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            using (var db = new SysDB())
            {
                //添加UserInfo表数据
                var user = new Test.UserInfo();
                user.UserName = "张三";
                user.Sex = Test.UserInfo_SexEnum.男;
                db.Update(user);

                var user2 = new Test.UserInfo();
                user2.UserName = "刘芳";
                user2.Sex = Test.UserInfo_SexEnum.女;
                db.Update(user2);

                var user3 = new Test.UserInfo();
                user3.UserName = "李某";
                user3.Sex = Test.UserInfo_SexEnum.人妖;
                db.Update(user3);

                //select男性的数据
                var table = (from m in db.UserInfo
                                 where (m.Sex & Test.UserInfo_SexEnum.男) == Test.UserInfo_SexEnum.男
                                 select m).ToArray();

                //显示每一个数据
                foreach (var useritem in table)
                {
                    Debug.WriteLine(string.Format("{0}是{1}" , useritem.UserName , useritem.Sex));
                }
                /*
                 输出的结果:
                    张三是男
                    李某是人妖
                 */
            }

        }
    }
}

别看写代码赋值时 ,user.Sex = Test.UserInfo_SexEnum.男; 要打这么多个文字,但是熟悉VS的朋友应该清楚,user.Sex后面打完=号,再按一下空格,VS马上就提供选择项给你选择了,根本不需要打字

时间: 2024-11-06 06:06:42

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(四)枚举类型的字段的相关文章

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(一)

Linq的好处非常明显,不仅把数据库访问层真正做到面向对象,而且也可以把系统的权限封装到数据库访问层去了. 微软目前稳定的Linq框架是Entity Framework 6.1,我自己编写了一个数据库工具Mr.E,可以用来设计数据库结构,并且把数据库结构编译成Entity Framework的对象,可以说是自动化的code first模式. Mr.E运行于.Net 4.5版本,大概功能如下: 1.网络版本,支持多人同时设计数据库: 2.目前支持Sql Server.MySql.Sqlite数据库

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(三)更新已发布的数据库

项目发布到服务器后,如果在后期,数据库的结构发生变更,如何更新到服务器呢? 首先,右键点击数据库,导出结构脚本文件 把脚本文件和 Mr.E.rar拷贝到服务器,在服务器解压Mr.E,运行其中的“更新数据库结构.bat” 选择脚本文件,选择数据库类型,填写数据库连接字符串,点击[开始更新] 更新不同类型的数据库 如果你设计的时候,是Sql Server类型数据库,但是想生成一个sqlite数据库,或者更新一个sqlite数据库,该怎么办? 和上面那个方法一样,只要选择sqlite数据库类型,填写正

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(二)级联删除和触发器

1.建立级联删除 Mr.E的级联删除并非数据库自带那个级联删除,而是Mr.E自带的,所以它能触发你C#里面编写的触发器. 首先,建立级联删除关系,如下图有两个表,UserInfo和UserDocument, UserDocument表依靠UserID字段,和UserInfo联系起来.现在我要实现,当UserInfo里面的数据删除时,自动删除UserDocument表里面UserID=UserInfo.id的那些数据,应该怎么做呢? 首先,双击UserInfo打开它的属性编辑器,点击[级联删除]设

数据库设计工具

1.PowerDesigner 数据库的构建工具 表:表关系以及表之间的关联关系 存储过程:设计具体的存储过程 视图:设计所需的视图 2.PdmReader 也是PowerDesigner的阅读器吧,是系统设计时给开发人员的一个试图查看 ====================================================== 1.开发系统,以前的数据库的设计文档都是word的形式,其表之间的关联关系看起来不是特别的清楚,对于新接收项目的开发人员很是麻烦,有了这些东西,可以保证

严重推荐一个免费开源数据库建模工具软件 --OpenSystemArchitect 4.0

嘿嘿,对于我这样的新手,这个工具还是很令人兴奋的. 真的是术业有专攻啊.关键还是免费开源 EXCEL,VISO,PPT,PS,CD,FREEHAND不是不可以,只是.人家还是专业点,方便点.. OpenSystemArchitect 4.0

网页版数据库设计工具wwwsqldesigner

下载地址:http://www.cubrid.org/wwwsqldesigner 下载后,放入Apache网站根目录,访问localhost/wwwsqldesigner-master/直接进入设计界面: 初始化为英文界面,选择option->language可更改界面显示语言. 1.添加表:点击添加表,输入名称和描述 2.修改字段大小和类型:双击表上面的字段 3.添加新字段:点击工具栏上面的添加列

数据库设计工具-powerdesigner

一.PowerDesigner导出SQL,注释为空时以name代替 操作步骤 1. 2. 3.将Value中的内容全部替换为如下 %20:COLUMN% [%National%?national ]%DATATYPE%[%Unsigned%? unsigned][%ZeroFill%? zerofill][ [.O:[character set][charset]] %CharSet%][.Z:[ %NOTNULL%][%IDENTITY%? auto_increment:[ default %

MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具

  MySQL  Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL  Workbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移 MySQL Workbench是下一代的可视化数据库设计.管理的工具,它同时有开源和商业化的两个版本.该软件支持Windows和Linux系统,下面是一些该软件运行的界面截图:

界面原型设计工具开源软件

界面原型图绘制工具 Pencil 开源原型设计工具 Framer [商业]原型制作软件 Axure RP 忙死了 ,反正是收藏的别人的,自己顺着链接看原文去. 界面原型设计工具开源软件