首页 > 代码库 > .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) 教程(四)枚举类型的字段
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。