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

.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马上就提供选择项给你选择了,根本不需要打字

 

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