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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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) 教程枚举类型的字段的主要内容,如果未能解决你的问题,请参考以下文章

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

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

.NET for Apache® Spark? 开源大数据分析工具

Mr.E 的用户管理

.NET Core Grpc 实现通信

5个经常使用的开源聊天应用