当前位置:   article > 正文

MVVM+三层架构+SqlSugar(code First)_mvvm orm mysql

mvvm orm mysql

本篇文章主要分享本人对MVVM,三层架构与ORM框架的一些心得,如果各路大神有其他看法可以在评论区评论,欢迎各位提出指导意见。废话不多说直接上图上代码。

这个软件是以学生信息管理系统为例子,UI 层提供对学生信息的增加,删除,修改,查询功能,对应到底层对数据库实现增删改查的操作.下面我就以三层架构的思维从上往下一一描述。

1.UI 层

这里采用了MVVM 的设计架构,目的是让视图代码和数据模型降低耦合,实现属性,方法的绑定。在控件上我稍微使用了控件模板和样式。

(1)View 代码:

  1. <Window x:Class="MVVMTest.View.MainWindow"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6.         xmlns:local="clr-namespace:MVVMTest.View"
  7.         xmlns:prism="http://prismlibrary.com/"
  8.         xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
  9.         mc:Ignorable="d"
  10.         Title="MainWindow" Height="450" Width="800">
  11.     <Window.Resources>
  12.              
  13.         <Style x:Key="buttonStyle" TargetType="Button">
  14.             <Setter Property="Margin" Value="30,5,30,5" />
  15.             <Setter Property="FontSize" Value="20"/>
  16.             <Setter Property="Background" Value="White"/>
  17.             <Setter Property="Template">
  18.                 <Setter.Value>
  19.                     <ControlTemplate TargetType="Button">
  20.                         <Border CornerRadius="10" BorderBrush="Blue" BorderThickness="1" Background="{TemplateBinding Background}">
  21.                             <!--继承父控件的Content样式-->
  22.                             <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
  23.                         </Border>
  24.                         <!--触发器,可以根据需求给控件增加不同的触发方法-->
  25.                         <ControlTemplate.Triggers>
  26.                             <Trigger Property="IsMouseOver" Value="true">
  27.                                 <Setter Property="Background" Value="Aqua"></Setter>
  28.                             </Trigger>
  29.                             <Trigger Property="IsPressed" Value="true">
  30.                                 <Setter Property="Background" Value="ForestGreen"></Setter>
  31.                             </Trigger>
  32.                         </ControlTemplate.Triggers>
  33.                     </ControlTemplate>
  34.                 </Setter.Value>
  35.             </Setter>
  36.         </Style>
  37.     </Window.Resources>
  38.     <Grid >
  39.         <Grid.ColumnDefinitions>
  40.             <ColumnDefinition Width="0.7*"/>
  41.             <ColumnDefinition Width="0.3*"/>
  42.         </Grid.ColumnDefinitions>
  43.         <DataGrid Name="dataGrid" Grid.Column="0" CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding studentModel.StudentList, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" CanUserSortColumns="False" IsReadOnly="True"  >
  44.             <DataGrid.Columns>
  45.                 <DataGridTextColumn Header="名字" Width="*" Binding="{Binding Name}"></DataGridTextColumn>
  46.                 <DataGridTextColumn Header="年龄" Width="*" Binding="{Binding Year}"></DataGridTextColumn>
  47.                 <DataGridTextColumn Header="地址" Width="*" Binding="{Binding Address}"></DataGridTextColumn>
  48.                 <DataGridTextColumn Header="电话号码" Width="*" Binding="{Binding PhoneNumber}"></DataGridTextColumn>
  49.             </DataGrid.Columns>
  50.             <i:Interaction.Triggers>
  51.                 <i:EventTrigger EventName="SelectionChanged">
  52.                     <i:InvokeCommandAction Command="{Binding selectItemChangedCommand}" CommandParameter="{Binding ElementName=dataGrid, Path=SelectedItem}"/>
  53.                 </i:EventTrigger>
  54.             </i:Interaction.Triggers>
  55.         </DataGrid>
  56.         <Grid Grid.Column="1">
  57.             <Grid.RowDefinitions>
  58.                 <RowDefinition/>
  59.                 <RowDefinition/>
  60.             </Grid.RowDefinitions>
  61.             <GroupBox Grid.Row="0" Header="学生信息">
  62.                 <Grid>
  63.                     <Grid.RowDefinitions>
  64.                         <RowDefinition/>
  65.                         <RowDefinition/>
  66.                         <RowDefinition/>
  67.                         <RowDefinition/>
  68.                     </Grid.RowDefinitions>
  69.                     <StackPanel Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
  70.                         <Label Content="姓名:"/>
  71.                         <TextBox Name="txbName" Margin="10,0,10,0" Width="150" Text="{Binding studentModel.Name, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, FallbackValue=Error}"/>
  72.                     </StackPanel>
  73.                     <StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
  74.                         <Label Content="年龄:"/>
  75.                         <TextBox Name="txbYear" Margin="10,0,10,0" Width="150" Text="{Binding studentModel.Year, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, FallbackValue=Error}" />
  76.                     </StackPanel>
  77.                     <StackPanel Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
  78.                         <Label Content="地址:"/>
  79.                         <TextBox Name="txbAddress" Margin="10,0,10,0" Width="150" Text="{Binding studentModel.Address, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, FallbackValue=Error}" />
  80.                     </StackPanel>
  81.                     <StackPanel Grid.Row="3" HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
  82.                         <Label Content="电话:"/>
  83.                         <TextBox Name="txbPhone" Margin="10,0,10,0" Width="150" Text="{Binding studentModel.PhoneNumber, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, FallbackValue=Error}"  />
  84.                     </StackPanel>
  85.                 </Grid>
  86.             </GroupBox>
  87.             <GroupBox Grid.Row="1" Header="数据操作">
  88.                 <Grid>
  89.                     <Grid.RowDefinitions>
  90.                         <RowDefinition/>
  91.                         <RowDefinition/>
  92.                         <RowDefinition/>
  93.                         <RowDefinition/>
  94.                     </Grid.RowDefinitions>
  95.                     <Button Grid.Row="0" Style="{StaticResource buttonStyle}" Command="{Binding buttonQueryCommand}"  Content="查询"/>
  96.                     <Button Grid.Row="1" Style="{StaticResource buttonStyle}" Command="{Binding buttonInsertCommand}"  Content="新增"/>
  97.                     <Button Grid.Row="2" Style="{StaticResource buttonStyle}" Command="{Binding buttonUpdataCommand}" Content="修改"/>
  98.                     <Button Grid.Row="3" Style="{StaticResource buttonStyle}" Command="{Binding buttonDeleteCommand}"  Content="删除"/>
  99.                 </Grid>
  100.             </GroupBox>
  101.         </Grid>
  102.     </Grid>
  103. </Window>


PS:在界面底下构造需要把Viewmodel 的数据绑定到前端中,可以组合引用

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15. using MVVMTest.ViewModel;
  16. using MVVMTest.View;
  17. namespace MVVMTest.View
  18. {
  19.     /// <summary>
  20.     /// MainWindow.xaml 的交互逻辑
  21.     /// </summary>
  22.     public partial class MainWindow : Window
  23.     {     
  24.         public MainWindow()
  25.         {
  26.             InitializeComponent();
  27.             DataContext = MainViewModel.Instance;
  28.         }
  29.     }
  30. }

  

(2)ViewModel 代码(这里跟事件的绑定我使用了Prism 框架,因为不想自己造轮子,其他的框架也是可以的,这块业务我使用了单例去设计)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using MVVMTest.Model;
  9. using Prism.Commands;
  10. namespace MVVMTest.ViewModel
  11. {
  12.     public class MainViewModel
  13.     {
  14.         static MainViewModel()
  15.         {
  16.         }
  17.         private MainViewModel()
  18.         {
  19.             IniViewModel();
  20.             BusinessLogic.BusinessLogic.Instance.SetRequest(studentModel.GetType());
  21.         }
  22.         public static MainViewModel Instance { get; } = new MainViewModel(); //这里使用单例去做业务处理
  23.         
  24.         //控件命令列表
  25.         // Prism 框架下的事件绑定,可带参和不带参
  26.         private DelegateCommand _buttonQueryCommand;
  27.         public DelegateCommand buttonQueryCommand =>
  28.             _buttonQueryCommand ?? (_buttonQueryCommand = new DelegateCommand(ViewQuery));
  29.         private DelegateCommand _buttonInsertCommand;
  30.         public DelegateCommand buttonInsertCommand =>
  31.            _buttonInsertCommand ?? (_buttonInsertCommand = new DelegateCommand(ViewInsert));
  32.         private DelegateCommand _buttonUpdataCommand;
  33.         public DelegateCommand buttonUpdataCommand =>
  34.            _buttonUpdataCommand ?? (_buttonUpdataCommand = new DelegateCommand(ViewUpdata));
  35.         private DelegateCommand _buttonDeleteCommand;
  36.         public DelegateCommand buttonDeleteCommand =>
  37.            _buttonDeleteCommand ?? (_buttonDeleteCommand = new DelegateCommand(ViewDelete));
  38.         private DelegateCommand<object> _selectItemChangedCommand;
  39.         public DelegateCommand<object> selectItemChangedCommand =>
  40.            _selectItemChangedCommand ?? (_selectItemChangedCommand = new DelegateCommand<object>(GetModelObject));
  41.         public StudentModel studentModel { get; set; }
  42.         private StudentModel selectStudentModel = new StudentModel();
  43.         private void IniViewModel()
  44.         {
  45.             studentModel = new StudentModel();
  46.         }     
  47.         private void ViewQuery()
  48.         {
  49.             studentModel.StudentList = BusinessLogic.BusinessLogic.Instance.QueryData();
  50.         }
  51.         private void ViewInsert()
  52.         {           
  53.             BusinessLogic.BusinessLogic.Instance.InsertData(studentModel);           
  54.         }
  55.         private void ViewUpdata()
  56.         {
  57.             selectStudentModel.Name = studentModel.Name;
  58.             selectStudentModel.Year = studentModel.Year;
  59.             selectStudentModel.Address = studentModel.Address;
  60.             selectStudentModel.PhoneNumber = studentModel.PhoneNumber;
  61.             BusinessLogic.BusinessLogic.Instance.UpdataData(selectStudentModel);
  62.         }
  63.         private void ViewDelete()
  64.         {
  65.             BusinessLogic.BusinessLogic.Instance.DeleteData(selectStudentModel);
  66.         }
  67.         private void GetModelObject(object obj)
  68.         {
  69.            if(obj!=null)
  70.             {
  71.                 selectStudentModel = obj as StudentModel;
  72.             }
  73.         }        
  74.     }
  75. }

Model 层(Model 层主要用来创建数据模型 和 对数据库的映射,我这里使用了SqlSuger  Code First 去实现数据库映射,同是界面对数据模型双向绑定 INotifyPropertyChanged 这个接口主要实现通知客户端数据刷新,System自带接口)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.ComponentModel;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using SqlSugar;
  9. namespace MVVMTest.Model
  10. {
  11.     [SugarTable("StudentData")]  //映射表名
  12.     public class StudentModel : INotifyPropertyChanged
  13.     {
  14.         private string _Name { get; set; }
  15.         [SugarColumn(IsNullable =true)]
  16.         public string Name
  17.         {
  18.             get { return _Name; }
  19.             set
  20.             {
  21.                 _Name = value;
  22.                 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name"));
  23.             }
  24.         }
  25.         private int _Id { get; set; }
  26.         [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] //主键
  27.         public int Id { get { return _Id; } set { _Id = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Id")); } }
  28.         
  29.         private string _Year { get; set; }
  30.         [SugarColumn(IsNullable = true)]
  31.         public string Year { get { return _Year; } set { _Year = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Year")); } }
  32.         private string _Address { get; set; }
  33.         [SugarColumn(IsNullable = true)]
  34.         public string Address { get { return _Address; } set { _Address = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Address")); } }
  35.         private string _PhoneNumber { get; set; }
  36.         [SugarColumn(IsNullable = true)]
  37.         public string PhoneNumber { get { return _PhoneNumber; } set { _PhoneNumber = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PhoneNumber")); } }
  38.         [SugarColumn(IsIgnore = true)]
  39.         public List<StudentModel> StudentList { get { return studentData; } set { studentData = value;PropertyChanged?.Invoke(this,new PropertyChangedEventArgs("StudentList")); } }
  40.       
  41.         private List<StudentModel> studentData = new List<StudentModel>() {  };
  42.        
  43.         public event PropertyChangedEventHandler PropertyChanged;
  44.     }
  45. }

2.业务逻辑层(这里我也用了单例,并且保证线程安全)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Data;
  7. using MVVMTest.DataAccess.DataBase;
  8. using MVVMTest.Common;
  9. using MVVMTest.Model;
  10. using System.Data;
  11. using System.Collections;
  12. using System.Reflection;
  13. namespace MVVMTest.BusinessLogic
  14. {
  15.     class BusinessLogic
  16.     {
  17.         private BusinessLogic()
  18.         {
  19.            
  20.         }
  21.         private static readonly object obj=new object();
  22.         private volatile static  BusinessLogic instance = null;
  23.         SqlSugerHelper sqlSugerHelper = new SqlSugerHelper();
  24.         public static  BusinessLogic Instance
  25.         {
  26.             get
  27.             {
  28.               if(instance==null)
  29.                 {
  30.                     lock(obj)
  31.                     {
  32.                         if(instance == null)
  33.                         instance = new BusinessLogic();
  34.                     }
  35.                         
  36.                 }
  37.                 return instance;
  38.             }
  39.             
  40.         }
  41.        public void SetRequest(Type dataModel)
  42.         {                      
  43.             sqlSugerHelper.IniDB(GlobelEnum.DatabaseType.SqlServer, dataModel);
  44.         }
  45.         public void InsertData(StudentModel studentModel)
  46.         {
  47.             sqlSugerHelper.Insert(studentModel);
  48.         }
  49.         public List<StudentModel> QueryData()
  50.         {
  51.             List<StudentModel> dataTable = new List<StudentModel>();
  52.             dataTable = sqlSugerHelper.Query();
  53.             return dataTable;
  54.         }
  55.         public void DeleteData(StudentModel studentModel)
  56.         {
  57.             sqlSugerHelper.Delete(studentModel);
  58.         }
  59.         public void UpdataData(StudentModel studentModel)
  60.         {
  61.             sqlSugerHelper.Updata(studentModel);
  62.         }
  63.         private DataTable ListToDt<T>(IEnumerable<T> collection)
  64.         {
  65.             var props = typeof(T).GetProperties();
  66.             var dt = new DataTable();
  67.             dt.Columns.AddRange(props.Select(p => new
  68.             DataColumn(p.Name, p.PropertyType)).ToArray());
  69.             if (collection.Count() > 0)
  70.             {
  71.                 for (int i = 0; i < collection.Count(); i++)
  72.                 {
  73.                     ArrayList tempList = new ArrayList();
  74.                     foreach (PropertyInfo pi in props)
  75.                     {
  76.                         object obj = pi.GetValue(collection.ElementAt(i), null);
  77.                         tempList.Add(obj);
  78.                     }
  79.                     object[] array = tempList.ToArray();
  80.                     dt.LoadDataRow(array, true);
  81.                 }
  82.             }
  83.             return dt;
  84.         }
  85.     }
  86. }


 

3.数据访问层(这里针对不同的数据库我使用了工厂模式去实现,由用户使用的时候再去选择实例哪一个数据库,这里的代码可能处理的不太好,欢迎大家发表不同意见)

(1)数据库基类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Data;
  7. using SqlSugar;
  8. namespace MVVMTest.DataAccess.DataBase
  9. {
  10.     public abstract class SqlBase
  11.     {
  12.         public abstract SqlSugarClient IniDb(Type DataModel, string DataBaseName, string ServerName) ;       
  13.       
  14.     }
  15. }


(2)数据库子类(SqlSever)(这里设计SqlSuger Code First 的代码)

  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace MVVMTest.DataAccess.DataBase
  9. {
  10.     public class SqlSever : SqlBase
  11.     {
  12.      
  13.         public override SqlSugarClient IniDb(Type DataModel, string DataBaseName, string ServerName ) 
  14.         {
  15.             SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
  16.             {
  17.                 ConnectionString =string.Format("server={0};database={1};uid=数据库账户;pwd=密码, ServerName, DataBaseName), 
  18.                 DbType = SqlSugar.DbType.SqlServer,//设置数据库类型
  19.                 IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放
  20.                 InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息
  21.             });
  22.             db.Aop.OnLogExecuting = (sql, pars) =>
  23.             {
  24.                 Console.WriteLine(sql + "\r\n" +
  25.                 db.Utilities.SerializeObject(pars.ToString()));  //打印数据库日志
  26.                 Console.WriteLine();
  27.             };
  28.             //创建数据库 如果该库不存在,则进行创建。(这里创建的是名字为 Student 数据库)
  29.             db.DbMaintenance.CreateDatabase();
  30.             //初始化数据表,如果没有则创建
  31.             db.CodeFirst.InitTables(DataModel);           
  32.             return db;
  33.         }
  34.     }
  35. }

(3)数据库子类(Sqlite)

  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace MVVMTest.DataAccess.DataBase
  9. {
  10.     public class Sqlite : SqlBase
  11.     {
  12.        
  13.         public override SqlSugarClient IniDb(Type DataModel, string DataBaseName, string ServerName)
  14.         {
  15.             SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
  16.             {
  17.                 ConnectionString = string.Format("server={0};database={1};uid=数据库账户;pwd=密码", ServerName, DataBaseName),
  18.                 DbType = SqlSugar.DbType.Sqlite,//设置数据库类型
  19.                 IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放
  20.                 InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息
  21.             });
  22.             db.Aop.OnLogExecuting = (sql, pars) =>
  23.             {
  24.                 Console.WriteLine(sql + "\r\n" +
  25.                 db.Utilities.SerializeObject(pars.ToString()));
  26.                 Console.WriteLine();
  27.             };
  28.             //创建数据库 如果该库不存在,则进行创建。(这里创建的是名字为 Student 数据库)
  29.             db.DbMaintenance.CreateDatabase();
  30.             //初始化数据表,如果没有则创建
  31.             db.CodeFirst.InitTables(DataModel);
  32.             return db;
  33.         }
  34.      
  35.     }
  36. }


(4) 数据库工厂

  1. using MVVMTest.Common;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace MVVMTest.DataAccess.DataBase
  8. {
  9.     public class DataBaseFactory
  10.     {
  11.         private DataBaseFactory()
  12.         {
  13.         }
  14.         static DataBaseFactory() { }
  15.         public  static DataBaseFactory Instance { get; } = new DataBaseFactory();
  16.         public SqlBase Create(GlobelEnum.DatabaseType databaseType)
  17.         {
  18.             SqlBase dataBaseFactory = null
  19.             switch(databaseType)
  20.             {
  21.                 case GlobelEnum.DatabaseType.MySql:
  22.                     break;
  23.                 case GlobelEnum.DatabaseType.SqlServer:
  24.                     dataBaseFactory = new SqlSever();
  25.                     break;
  26.             }
  27.             return dataBaseFactory;
  28.         }
  29.     }
  30. }


(5)数据库访问接口

  1. using MVVMTest.Common;
  2. using MVVMTest.Model;
  3. using SqlSugar;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using MVVMTest.Model;
  10. using System.Data;
  11. namespace MVVMTest.DataAccess.DataBase
  12. {
  13.     public class SqlSugerHelper
  14.     {
  15.         SqlBase sqlBase;
  16.         SqlSugarClient sqlSugarClient;
  17.         public void IniDB(GlobelEnum.DatabaseType databaseType, Type dataModel)
  18.         {
  19.             sqlBase = DataBaseFactory.Instance.Create(databaseType);
  20.             sqlSugarClient = sqlBase.IniDb(dataModel, "Student", "服务器名称");
  21.         }
  22.         public void Insert(StudentModel studentModel)
  23.         {
  24.            
  25.                 sqlSugarClient.Insertable(studentModel).ExecuteCommand();
  26.                 //var a = sqlSugarClient.Ado.SqlQuery<StudentModel>("select * from StudentData"); // 数据库语句
  27.         }
  28.         public List<StudentModel> Query()
  29.         {
  30.             List<StudentModel> studentModels = new List<StudentModel>();
  31.             studentModels=sqlSugarClient.Queryable<StudentModel>().ToList();
  32.             sqlSugarClient.Close();
  33.             return studentModels;
  34.         }
  35.         public void Delete(StudentModel studentModel)
  36.         {           
  37.             sqlSugarClient.Deleteable(studentModel).ExecuteCommand();
  38.         }
  39.         public void Updata(StudentModel studentModel)
  40.         {
  41.             sqlSugarClient.Updateable(studentModel).ExecuteCommand();
  42.         }
  43.     }
  44. }

公共类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MVVMTest.Common
  7. {
  8.    public static class GlobelEnum
  9.     {
  10.       public  enum SqlCommand
  11.         {
  12.             Invalid=-1,
  13.             IniDB=0,
  14.             Query=1,
  15.             Insert=2,
  16.             Updata=3,
  17.             Delete=4,
  18.         }
  19.         public enum DatabaseType
  20.         {
  21.             Invalid=0,
  22.             Sqlite=1,
  23.             SqlServer=2,
  24.             MySql=3,
  25.         }
  26.         public enum ORMType
  27.         {
  28.             Invalid = 0,
  29.             CodeFirst=1,
  30.             DBFirst=2,
  31.             ModelFirst=3,
  32.         }
  33.     }
  34. }


 

公共类中有一些是不需要的枚举,可以不用完全借鉴

欢迎各位大神指导评论
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/135131
推荐阅读
相关标签
  

闽ICP备14008679号