<address id="xpjh9"><listing id="xpjh9"><meter id="xpjh9"></meter></listing></address>

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
<noframes id="xpjh9">
<noframes id="xpjh9">

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
    <form id="xpjh9"></form><address id="xpjh9"><listing id="xpjh9"><menuitem id="xpjh9"></menuitem></listing></address>

      <noframes id="xpjh9">
      VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
      SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
      當前位置:
      首頁 > 數據庫 > Access數據庫 >
      • access數據庫之讓ADO.NET Entity Framework 支持ACCESS數據

      • 2019-07-02 21:54 來源:未知

      如寫的不好請見諒,本人水平有限。

      個人簡歷及水平:。 http://www.cnblogs.com/hackdragon/p/3662599.html

      接到一個程序和網頁交互的項目,用ADO.NET Entity Framework (以下簡稱EF)很快就搞完了,但是對方的空間提供的MSSQL數據庫比較昂貴,所以就采用ACCESS數據庫,但是我查了資料發現 EF不支持Access數據庫,(以前覺得LINQ TO SQL 不支持 這個應該支持),寫完的代碼不想用OLEDB在寫了,于是網上一頓查,試驗了ALINQ和其他很多的,總是不能符合項目的需要。不是更新不行就算插入失敗,要不就是經常查詢錯誤。最后沒辦法,我自己決定寫一個實體支持ACCESS數據庫,我覺得懶人應該有需要這個的,當然大俠們估計有更好的辦法來更懶一些。

      懶人第一步:

      因為VS的實體生成器不支持ACCESS數據庫,所以無法生成代碼,但是想快速開發項目,那么你可以用SQL數據庫先來設計,然后導出數據庫到ACCESS數據庫,這樣做的目的是讓生成器可以生成我們所需要的代碼。注意設計數據庫字段的時候要考慮他們的兼容性。

      勤快第二步:

      開始寫代碼了,原始的上下文代碼如下:

      復制代碼
      #region 上下文
          
          /// <summary>
          /// 沒有元數據文檔可用。
          /// </summary>
          public partial class SqlDoorEntities1 : ObjectContext
          {
              #region 構造函數
          
              /// <summary>
              /// 請使用應用程序配置文件的“SqlDoorEntities1”部分中的連接字符串初始化新 SqlDoorEntities1 對象。
              /// </summary>
              public SqlDoorEntities1() : base("name=SqlDoorEntities1", "SqlDoorEntities1")
              {
                  OnContextCreated();
              }
          
              /// <summary>
              /// 初始化新的 SqlDoorEntities1 對象。
              /// </summary>
              public SqlDoorEntities1(string connectionString) : base(connectionString, "SqlDoorEntities1")
              {
                  OnContextCreated();
              }
          
              /// <summary>
              /// 初始化新的 SqlDoorEntities1 對象。
              /// </summary>
              public SqlDoorEntities1(EntityConnection connection) : base(connection, "SqlDoorEntities1")
              {
                  OnContextCreated();
              }
          
              #endregion
          
              #region 分部方法
          
              partial void OnContextCreated();
          
              #endregion
          
              #region ObjectSet 屬性
          
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public ObjectSet<CmdMsg> CmdMsg
              {
                  get
                  {
                      if ((_CmdMsg == null))
                      {
                          _CmdMsg = base.CreateObjectSet<CmdMsg>("CmdMsg");
                      }
                      return _CmdMsg;
                  }
              }
              private ObjectSet<CmdMsg> _CmdMsg;
          
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public ObjectSet<Door> Door
              {
                  get
                  {
                      if ((_Door == null))
                      {
                          _Door = base.CreateObjectSet<Door>("Door");
                      }
                      return _Door;
                  }
              }
              private ObjectSet<Door> _Door;
          
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public ObjectSet<Manager> Manager
              {
                  get
                  {
                      if ((_Manager == null))
                      {
                          _Manager = base.CreateObjectSet<Manager>("Manager");
                      }
                      return _Manager;
                  }
              }
              private ObjectSet<Manager> _Manager;
          
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public ObjectSet<Users> Users
              {
                  get
                  {
                      if ((_Users == null))
                      {
                          _Users = base.CreateObjectSet<Users>("Users");
                      }
                      return _Users;
                  }
              }
              private ObjectSet<Users> _Users;
      
              #endregion
      
              #region AddTo 方法
          
              /// <summary>
              /// 用于向 CmdMsg EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 ObjectSet&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToCmdMsg(CmdMsg cmdMsg)
              {
                  base.AddObject("CmdMsg", cmdMsg);
              }
          
              /// <summary>
              /// 用于向 Door EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 ObjectSet&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToDoor(Door door)
              {
                  base.AddObject("Door", door);
              }
          
              /// <summary>
              /// 用于向 Manager EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 ObjectSet&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToManager(Manager manager)
              {
                  base.AddObject("Manager", manager);
              }
          
              /// <summary>
              /// 用于向 Users EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 ObjectSet&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToUsers(Users users)
              {
                  base.AddObject("Users", users);
              }
      
              #endregion
      
          }
      
          #endregion
      復制代碼

      ObjectContext 繼承于IDisposable 那么我寫一個自己的 ObjectContext 這樣的類 我給他起個名字叫EFToAccess 那么多 構造方法 我們就需要2個一個 是 給定的連接字符串 一個是默認從webconfig中讀取的鏈接字符串就可以了。本人偷懶,直接讀取指定的路徑了。數據庫的簡單讀寫可能都依賴一個where查詢,那么怎么實現自己的where查詢就很關鍵,于是我看資料研究了2天Lambda Expression 表達式。最后還是看了 博客園的一篇 擴展LINQ to SQL:使用Lambda Expression批量刪除數據才會用,現在也不是很明白,懶人就是拿來主義,不怎么消化,我現在也沒多少時間消化知識,估計這樣的人也不少吧。下面是我自己用的的方法,利用VS生成的代碼 2個替換1個刪除搞定 (ObjectContext替換“你自己的類名我的是SqlDoorEntities”,ObjectSet替換成IEnumerable,刪除無用的構造函數)

      復制代碼
      public class SqlDoorEntities : EFToAccess
          {
              public SqlDoorEntities():base("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
      +AppDomain.CurrentDomain.BaseDirectory + "bin\\DataDoor.mdb")
      
              {
              }
              #region IEnumerable 屬性
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
      
              public IEnumerable<CmdMsg> CmdMsg
              {
                  get
                  {
                      if ((_CmdMsg == null))
                      {
                          _CmdMsg = base.CreateObjectSet<CmdMsg>("CmdMsg");
                      }
                      return _CmdMsg;
                  }
              }
              private IEnumerable<CmdMsg> _CmdMsg;
      
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public IEnumerable<Door> Door
              {
                  get
                  {
                      if ((_Door == null))
                      {
                          _Door = base.CreateObjectSet<Door>("Door");
                      }
                      return _Door;
                  }
              }
              private IEnumerable<Door> _Door;
      
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public IEnumerable<Manager> Manager
              {
                  get
                  {
                      if ((_Manager == null))
                      {
                          _Manager = base.CreateObjectSet<Manager>("Manager");
                      }
                      return _Manager;
                  }
              }
              private IEnumerable<Manager> _Manager;
      
              /// <summary>
              /// 沒有元數據文檔可用。
              /// </summary>
              public IEnumerable<Users> Users
              {
                  get
                  {
                      if ((_Users == null))
                      {
                          _Users = base.CreateObjectSet<Users>("Users");
                      }
                      return _Users;
                  }
              }
              private IEnumerable<Users> _Users;
      
              #endregion
              #region AddTo 方法
      
              /// <summary>
              /// 用于向 CmdMsg EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 IEnumerable&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToCmdMsg(CmdMsg cmdMsg)
              {
                  base.AddObject("CmdMsg", cmdMsg);
              }
      
              /// <summary>
              /// 用于向 Door EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 IEnumerable&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToDoor(Door door)
              {
                  base.AddObject("Door", door);
              }
      
              /// <summary>
              /// 用于向 Manager EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 IEnumerable&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToManager(Manager manager)
              {
                  base.AddObject("Manager", manager);
              }
      
              /// <summary>
              /// 用于向 Users EntitySet 添加新對象的方法,已棄用。請考慮改用關聯的 IEnumerable&lt;T&gt; 屬性的 .Add 方法。
              /// </summary>
              public void AddToUsers(Users users)
              {
                  base.AddObject("Users", users);
              }
      
              #endregion
          }
      復制代碼

      懶人第三步:

      為了讓代碼和EF使用方法基本一致,所以不得不做一些工作讓我寫的類基本滿足項目需要。首先實現一個讓Lambda Expression 表達式變成字符串的函數

      復制代碼
      string GetWhereString(Expression Func)
              {
                  ConditionBuilder conditionBuilder = new ConditionBuilder();
                  conditionBuilder.Build(Func);
                  for (int i = 0; i < conditionBuilder.Arguments.Length; i++)
                  {
                      object ce = conditionBuilder.Arguments[i];
                      if (ce == null)
                          conditionBuilder.Arguments[i] = "null";
                      else if (ce is ValueType)
                          conditionBuilder.Arguments[i] = ce.ToString();
                      else if (ce is string || ce is char)
                          conditionBuilder.Arguments[i] = string.Format("'{0}'", ce.ToString());
                      else if (ce is DateTime)
                          conditionBuilder.Arguments[i] = string.Format("#{0}#", ce.ToString());
      
                  }
                  return string.Format(conditionBuilder.Condition, conditionBuilder.Arguments);
              }
      復制代碼

      上面的ConditionBuilder類代碼我就不貼出了。大家參考我提到的那篇文章,如果實際應用當中,有死循環的地方那么應該在該調用基類的地方加入base.XXX比如base.Visit

      實現我們自己的where 這里如果我們自己生成類 那么我們的實體類類可以直接有一個where 方法,但是我為了能讓我們懶人使用VS生成的實體類只能這么實現了。為了代碼利用率,我們還需要另外2個函數。

      取得所有記錄

      復制代碼
      IEnumerable<TEntity> SelectAll<TEntity>() where TEntity : new()
              {
                  TEntity TDefault = new TEntity();
                  string entitySetName = TDefault.GetType().Name;
                  string strSqlQuery = string.Format("SELECT * FROM {0}", entitySetName);
                  m_LastSqlCommand = strSqlQuery;
                  return SelectWhere<TEntity>(strSqlQuery);
              }
      復制代碼

      經常的條件查詢

      復制代碼
      public IEnumerable<TEntity> Where<TEntity>(Expression<Func<TEntity, bool>> Func) where TEntity : new()
              {
                  TEntity TDefault = new TEntity();
                  string entitySetName = TDefault.GetType().Name;
                  string strWhere = GetWhereString(Func).Replace("Where", entitySetName);
                  string strSqlQuery = string.Format("SELECT * FROM {0} WHERE {1} ", entitySetName, strWhere);
                  m_LastSqlCommand = strSqlQuery;
                  return SelectWhere<TEntity>(strSqlQuery);
              }
      復制代碼

      最后的where

      復制代碼
      IEnumerable<TEntity> SelectWhere<TEntity>(string strSqlQuery) where TEntity : new()
              {
                  TEntity TDefault = new TEntity();
                  //確認基礎類型是否是 EntityObject類型
                  Type TBase = TDefault.GetType();
                  while ((TBase.BaseType) != null)
                  {
                      if (TBase.Name == "EntityObject") break;
                      TBase = TBase.BaseType;
                  }
                  bool IsPCEH = false;
                  if (TBase != null && TBase.Name == "EntityObject")  IsPCEH = true;
                  PropertyInfo[] properties = TDefault.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
                  List<TEntity> Records = new List<TEntity>();
                  string entitySetName = TDefault.GetType().Name;
                  try
                  {
                      OleDbCommand Cmd = new OleDbCommand(strSqlQuery, AccessConn);
                      OleDbDataReader sqlReader = Cmd.ExecuteReader();
                      #region 數據庫查詢開始
                      while (sqlReader.Read())
                      {
                          TEntity TValue = new TEntity();
                          //輸入是EntityObject類型,那么加入屬性改變事件
                          if (IsPCEH)
                          {
                              EntityObject EO = TValue as EntityObject;
                              EO.PropertyChanged += PropertyChangedEH;
                          }
                          for (int i = 0; i < sqlReader.FieldCount; i++)
                          {
                              string strField = sqlReader.GetName(i);
                              //根據字段名 反射 類的屬性
                              PropertyInfo p = properties.Where(P => string.Compare(P.Name, strField, true) == 0).First();
                              #region 數據轉換
                              switch (p.PropertyType.Name.ToString().ToLower())
                              {
                                  case "int16":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetInt16(i), null);
                                      break;
                                  case "int32":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetInt32(i), null);
                                      break;
                                  case "int64":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetInt64(i), null);
                                      break;
                                  case "string":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetString(i), null);
                                      break;
                                  case "double":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetDouble(i), null);
                                      break;
                                  case "float":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetFloat(i), null);
                                      break;
                                  case "decimal":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetDecimal(i), null);
                                      break;
                                  case "datetime":
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetDateTime(i), null);
                                      break;
                                  default:
                                      if (!sqlReader.IsDBNull(i)) p.SetValue(TValue, sqlReader.GetValue(i), null);
                                      break;
                              }
                              #endregion
      
                          }
                          Records.Add(TValue);
                      }
                      #endregion
                      Cmd.Clone();
                      m_IsDetectionChange = true;
                  }
                  catch (Exception)
                  {
                      throw;
                  }
                  return Records;
              }
      復制代碼

      屬性的改變(也就是數據庫記錄的字段值)我們要知道才能實現EF的SaveChanges()函數那么我們需要簡歷一個數組變量,直接上代碼

      //表名            //主鍵              //屬性    值1 值2 主鍵類型名字
              Dictionary<string, Dictionary<string, Dictionary<string, object[]>>> m_ArrDetection = new Dictionary<string, Dictionary<string, Dictionary<string, object[]>>>();
      
      復制代碼
      void PropertyChangedEH(object sender, PropertyChangedEventArgs e)
              {
                  //沒有開啟返回
                  if (!m_IsDetectionChange) return;
                  //反射所有屬性
                  PropertyInfo[] properties = sender.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
                  //查詢主鍵
                  PropertyInfo EntityKey = GetEntityKeyFormAllProperty(properties);
                  //沒有主鍵的返回(表必須要有主鍵)
                  if (EntityKey == null) return;
                  //表名字
                  string Table = sender.GetType().Name;
                  //主鍵值
                  string MainKey = EntityKey.GetValue(sender, null).ToString();
                  if (MainKey == null || MainKey == "") return;
                  //沒有表 就添加
                  if (!m_ArrDetection.ContainsKey(Table)) m_ArrDetection[Table] = new Dictionary<string, Dictionary<string, object[]>>();
                  //沒有主鍵 就添加
                  if (!m_ArrDetection[Table].ContainsKey(MainKey)) m_ArrDetection[Table][MainKey] = new Dictionary<string, object[]>();
                  //主鍵是不用更新的(一般數據庫主鍵都是自動增長的吧,尤其快速開發的項目)
                  if (e.PropertyName == MainKey) return;
                  PropertyInfo p = properties.Where(P => string.Compare(P.Name, e.PropertyName, true) == 0).First();
                  //賦值
                  m_ArrDetection[Table][MainKey][e.PropertyName] = new object[2] { p.GetValue(sender, null), EntityKey.Name };
              }
      復制代碼

      查找主鍵的函數

      復制代碼
      private bool IsEntityKeyProperty(PropertyInfo Info)
              {
                  foreach (Attribute attr in Attribute.GetCustomAttributes(Info))
                  {
                      if (attr is System.Data.Objects.DataClasses.EdmScalarPropertyAttribute)
                      {
                          System.Data.Objects.DataClasses.EdmScalarPropertyAttribute Key = (System.Data.Objects.DataClasses.EdmScalarPropertyAttribute)attr;
                          if (Key.EntityKeyProperty == true)
                          {
                              return true;
                          }
                      }
                  }
                  return false;
              }
              private PropertyInfo GetEntityKeyFormAllProperty(PropertyInfo[] properties)
              {
                  foreach (PropertyInfo Info in properties)
                  {
                      if (IsEntityKeyProperty(Info)) return Info;
                  }
                  return null;
              }
            
      
      
      
        
      江苏快3 58222bb.com | 44ff940.com | 105boo.com | www.h6620.com | www.00618o.com | 463j8.com | www.127283.com | www.hg88.vip | www.15011k.com | 6150.com | 2019zz.cc | www.49956p.com | www.cq0066.com | 6830x.com | 30688c.com | www.985576.com | www.9931331.com | www.b50336.com | 65561155.com | 5804r.com | www.50051d.com | www.cp67771.com | www.033033u.com | 206403.com | www.711414.com | www.69567k.com | www.pj9799.com | 66300vip20.com | dahongying.com | www.35155f.com | www.50999a.com | www.0636h.com | 4288z.com | sha0006.com | www.7782r.com | www.8313d.com | www.882745.com | 3416l.com | 8977gg.com | www.679by.com | www.77658xx.com | www.yh8464.com | tl850.com | zhcp22.com | www.955474.com | www.81608o.com | www.ag6215.com | www.6868xj.com | 262329.com | 3467y.am | www.197802.com | www.78700f.com | www.v88134.com | www.25288o.com | 30007s.com | 86811ll.com | www.178225.com | www.51515k.com | www.4996cs.com | www.js7444.com | 2864g.com | 2jsaaa.com | 98955i.com | www.zcwf6.com | www.flb177.com | www.28944.com | www.yinhe1.cc | 588bbb.cc | 6839822.com | bcbm777.com | www.zg39.com | www.019988.com | www.673888y.com | www.395599.com | 389988.com | pj88vv.com | 54443u.com | 73055f.com | www.965960.com | www.36585555.com | www.4521a.com | www.88399c.com | www.xpj9878.com | 2643b.com | gg7742.com | 62222c.com | 44005156.com | www.49956i.com | www.915319.com | www.0270z.com | www.5446bb.com | www.19019s.com | www.js297.com | www.00829n.com | 2400007.com | 2373x.com | r4042.com | 25288z.com | bet3659091.com | www.178723.com | www.cb0999.com | www.799941.com | www.bb4625.com | www.8313e.com | www.168uuu.com | www.hai3333.com | www.xpj9878.com | 5446kk.com | 365vip700.cc | 3685t.com | hhvip666.com | 092.com | 97570yl.com | 2687js.com | 8449hb.com | www.556742.com | www.c1350.com | www.50080r.com | www.368381.com | www.xpj8856.com | www.m7764.com | www.2206488.com | www.226600r.com | www.306444b.com | www.3024.com | www.dc1109.com | www.20161122.com | www.666423.net | www.998msc.com | www.tushan38.com | www.1118xj.com | 690008.com | 2535app.com | 99332007.com | ude197.com | jj38648.cc | 87363c.com | 8037jj.com | 38738733.com | 61323377.com | hg0099e.com | bwin8w.com | bet28m.com | 4445.com | 21052277.com | 588mmm.cc | vip1524.com | 06389797.com | 883399x.com | 87665g.com | 8866vn77.com | www.0044hg.com | www.vns6005.com | www.9068zz.com | www.77537t.com | www.hg226.com | www.3459b.com | www.hg8728.net | www.27706.com | www.hgbet66.com | www.21365xx.com | www.55268tt.com | www.7025u.com | www.3024.com | www.xpj3578.com | www.000435.com | www.jh6677.com | www.97cp789.com | www.808888m.com | www.sha2233.com | www.4996hs.com | www.66pjjt.com | www.p98478.com | www.088014.com | www.87498.com | www.022l.cc | www.901391.com | www.383566.com | www.52072l.com | www.455598.com | www.32123v.com | 08159l.com | 22749.com | 2237.com | 001122332.com | 556888.com | 37730vip.com | www.29886m.com | www.q9163.com | www.303033.com | www.800544.com | www.sd58qp.com | www.86267q.com | www.23hf.com | www.097918.com | 818.cc | 66669193.com | 999201.com | qycp05.com | www.hg44403.com | www.hg486.com | www.267185.com | www.js58333.com | www.77802m.com | www.708330.com | 9971001.com | 80892ff.com | ll4119.com | LXYL352.com | 18775d.com | www.hg1668.com | www.jh6677.com | www.n063801.com | www.xy52.vip | www.811257.com | 0363d.com | 9949i.com | df8bet.com | www.hg66768.com | www.248247.com | www.5099oo.com | www.jl58qp.com | www.065wy.com | www.099816.com | 77151.com | 13879455.com | www.bt258.com | www.hj358.com | www.8905s.com | www.07500w.com | www.208780.com | 8890823.com | 20054477.com | www.i7727.cc | www.b35yy.com | www.0270m.com | www.232775.com | 1213.com | 35252n.com | 54248800.com | 4018hh.com | www.da888yl.com | www.500128.com | www.42070016.com | www.843980.com | yh20140.vip | 2359933.com | www.525xpj.com | www.5504h.com | www.954321v.com | www.627791.com | tt6821.com | aaa7570.com | www.777989.com | www.5181889.com | www.3552c.com | 2334dh.com | z9p5j.cn | www.1569227.com | www.b83377.com | www.989447.com | 543c.cc | 8381s.com | www.hg88996.com | www.087i.com | www.500227.com | 1592c.com | 79964j.com | www.63328.cc | www.66652m.com | 1434k.com | yhxinjiang.vip | tyc6046.com | 7726018.com | www.330099y.com | www.40288n.com | www.lg7717.com | 2247tt.com | www.xpj8888.cc | www.ee55826.com | www.530 | 7508f.com | 51200oo.com | www.85857y.com | www.8816u.com | 6830aa.com | 4997e.com | www.532159.com | www.60007n.com | 4221999.com | blhvip15.com | www.fh70.com | www.988917.com | 30019ii.com | www.hg520.com | www.35700dd.com | www.774311.com | 33432g.com | www.7893w46.com | www.30350o.com | www.584511.com | so88888cc | www.77449.com | www.00765.com | 3522ss.com | www.717772.com | 131zz.net | www.6666845.com | www.68365h.com | wzyxwz.com | 3967h.com | www.456990.com | www.51550.cc | 00669193.com | www.pj4180.com | www.68993256.com | 131mmm.net | 58000d.com | www.678js777.com | www.053552.com | 660411.com | www.dfh281.com | www.955381.com | 2214xx.com | www.135suncity.com | www.33588t.com | 9737vv.me | www.hg77009.com | www.hg5029.com | 9964h.com | 4812n.com | www.sands2006.com | 45637f.com | 56988w.vip | www.4996gx.com | www.170882.com | e2554.com | www.00773l.com | www.330256.com | www.71399o.com | 8037e.com | www.5114111.com | www.868422.com | 9679n.com | www.55526k.com | www.685053.com | p08199.com | www.xpj5959.com | www.89894i.com | 776093.com | www.6386a.com | 249163.com | www.s8866.com | www.yl13444.com | dz0999.com | www.3959j.com | www.1368d.cc | tt40033.com | www.796813.com | www.196081.com | 5003ccc.com | www.hr466.com | YL7999.com | www.rrrr0076.com | www.959579.com | uu00.com | www.7783066.com | mm67890.com | www.8694d.com | www.9478e.com | 22098.com | www.6776bb.com | 3379v.com | www.ca1066.com | www.33997m.com | www.hcjt2.com | 80036.com | www.172270.com | 1483jj.com | www.32126g.net | www.36788w.com | ii3405.com | www.5981d.com | 4880a.com | www.hg7111.com | www.88266c.com | 3844.com | www.954321x.com | 492oo.com | www.55545g.com | hgyz88.com | www.wn99ww.com | www.914907.com | 2698l.com | www.sx1811.com | 5566bet.vip | www.7bet005.com | a4255.com | www.js423.com | www.314213.com | www.ylhg5858.com | www.055n.cc | 14683333.com | www.hg3005.tw | xinvip2.com | www.z2894.com | 80878o.com | www.50999f.com | d3410.com | www.34388a.com | yk102.com | www.4766kk.com | www.lfcp096.com | www.319989.com | www.vip6277.com | www.924177.com | vnsr44888.com | www.60996.cc | mgm3242q.com | www.52303z.com | 8547a.com | www.ya2019c.com | 4018ff.com | www.y98478.com | 3566ss.com | www.22ok22.com | uc375.com | www.32031p.com | 6340.com | www.07679j.com | 08778n.com | www.91779u.com | ty77711.com | www.888ag.net | 10050534.com | www.5719a.com | 7508b.com | www.8905q.com | 4036yy.com | www.1434o.com | f3410.com | www.rrqp222.com | 6487hhh.com | www.6678687.com | 2146e.com | www.ag.hg3005.com | hg0099e.com | www.81520w.com | 3122pp.com | www.055g.cc | www.56733d.com | www.jd8866.com | www.956458.com | www.bet1677.com | www.397750.com | www.xw2200.com | 8547gg.com | www.hg032.com | 7380.com | www.62979c.com | e4255.com | www.550021m.com | 50000023.com | www.723013.com | www.88837a.com | 1919xpj.com | www.zte555.com | 5555vn77.com | www.522665.com | pj9937.com | www.2875y.com | www.9374v.com | www.137103.com | www.dr1199.com | 44077s.com | www.535901.com | 983888q.com | www.2373l.com | www.alpk55.com | 86688092.com | www.386464.com | 4379s.com | www.pj56a.com | hg128.com | www.351089.com | www.dz2899.com | 316.cc | www.x55789.com | 03dd.cc | www.501340.com | 77775309.com | www.pjc88.vip | q888.com | www.690776.com | www.amdc0005.com | 12742w.com | www.68993227.com | hgw168x.com | www.068639.com | www.5504c.com | 4022dd.com | www.41518.com | www.h7788j.com | o2490.com | www.ag3366.com | 775948.com | www.551475.com | www.jty649.com | 15512.com | www.73736c.com | www.hg0096.com | 923910.com | www.pjc55.vip | feicai0594.com | www.262918.com | www.ggv.99233v.com | k70111.com | www.c229.net | www.am1155.com | 11005g.com | www.1035u.com | www.1596e.com | 861224.com | www.36787j.com | www.330099n.com | 59599o.com | www.87668n.com | www.2061270.com | 1213qqq.com | www.99788n.com | www.36677d.com | 4310.com | www.36787f.com | 78115500.com | www.99094t.com | www.hg3028.com | 3522ww.cc | www.4331j.com | www.vip6277.com | jr7777.com | www.771478.com | www.sun7708.com | 33318a.com | www.14392.com | www.77605b.com | 9679i.com | www.809183.com | www.f456x.com | qq365u.com | www.33588i.com | www.99552mm.com | www.jinsha49.com | 3189xx.com | www.87668t.com | www.am5833.com | yumingty5.com | www.644680.com | www.8473z.com | 7779y.cc | 1770f.com | www.78949y.com | www.015456.com | 3510.com | www.230320.com | www.6386c.com | www.tyc665.com | js66.com | www.923599.com | www.83568t.com | n2306.com | 1366y.com | www.12455j.com | www.wi6666.com | 8030c.com | 06006u.com | www.04088.com | www.5522js.com | 00qq8331.com | www.d69096.com | 104727.com | 87665x.com | www.07500w.com | www.68277777.com | 80188u.com | sha9955.com | www.6tdc.com | www.7415c.com | www.pu2678.com | i32365.com | www.531982.com | www.js2929.com | www.yl00222.com | xhtd12345.com | www.89894o.com | www.7434.com | www.jm49.com | 99111ww.com | hd9909.com | www.712887.com | www.5719d.com | www.44112055.com | 2334vip4.com | aoxueqi.com | www.2632h.com | www.89599k.com | www.xpj9878.com | pj88ee.com | 44nn8332.com | www.75679.com | www.89599m.com | www.hg56777.com | 86611l.com | 1468.com | www.0014x.com | www.1429h1.com | 1596bb.com | www.xpjok.com | www.7380r.com | 4590m.com | 6969xpj.com | www.32123r.com | www.8850w1.com | www.36536509.com | kk01234.com | www.914905.com | 572755g.com | 4776611.com | www.50024a.com | www.60123m.com | www.98888js.com | www.67797x.com | wns26.com | l2649.com | www.598799.com | www.993956.com | www.198hg.com | www.ag6051.com | ll4255.com | 3552d.com | www.768996.com | www.y07a.com | www.818999.com | www.39695u.com | t77304.com | 1408q.com | www.389844.com | www.77801f.com | www.p69096.com | www.0885k.com | 748335.com | 4590y.com | 2373e.com | www.508533.com | www.83033c.com | www.3983177.com | www.734069.com | www.yyhbet6.com | ra6662.com | 8850.cc | 403237.com | www.855312.com | www.546230.com | www.cn365b.com | www.js297.com | www.38200m.com | 4000853.com | 228449.com | hy9996.com | www.320663.com | www.5854u.cc | www.y98a.com | www.10999e.com | www.234677.com | www.js16123.com | ll2649.com | www.3479i.com | www.4058d.com | www.hg8359.com | www.3643w.com | 0311v.com | 4182i.com | js04749.com | 1384.com | 32424q.com | www.656270.com | www.27776.cc | www.9989586.com | www.4058ss.com | www.7793a.com | www.y186w.com | www.yh6099.com | feicai0393.com | bet28f.com | 4196i.com | 32212r.com | z3144.com | 496.be | www.548611.com | www.qbwc3.com | www.66332z.com | www.99094e.com | www.1429e1.com | www.374317.com | www.888345.com | www.w444999.com | www.yh02345.com | 1592m.com | 2649s.com | yl6895.com | 34c35.com | 0612.am | 4165f.com | hgw2777.com | 20174466.com | 2546m.com | emv3626.com | www.188712.com | www.641577.com | www.983112.com | www.918ae.com | www.36787b.com | www.771497.com | www.55vn777.com | www.1434t.com | www.pjc11.vip | www.295002.com | www.55060z.com | www.80969w.com | www.307922.com | www.y4042.com | www.11223885.com | www.js6767r.com | www.46662.com | www.944449.com | www.145377.com | www.1596d.com | www.jg6655.com | www.0022524.com | www.64821122.com | www.mapai02.com | www.216yh.com | www.4123g.app | www.28824s.com | www.83008y.com | www.sss998.com | www.hg901.com | www.881456.com | www.66442.com | www.76775a.com | www.ylg7777.com | www.5966bbb.com | www.35252l.com | www.20199uu.com | www.881.ag | www.klcp385.com | www.65066hh.com | www.666.bi | www.3066rr.com | www.a32031.com | www.0600b.cc | www.zzwyl.com | www.6939t.com | www.99638j.com | www.08588w.com | www.0014j.com | www.979500.com | www.757988.com | www.463552.com | www.028082.com | 9971001.com | 4997i.com | www.3691s.com | www.8c333.com | www.395768.com | www.80767b.com | www.2109e.com | www.921677.com | www.399046.com | 4195uu.com | yh20140.vip | js66.com | 3807e.com | 00vv8331.com | 1429i.com | www.bet365609.com | www.0099ooo.com | www.vipxl.3009300930093009.com | www.cp505.com | www.b80288.com | www.t94600.com | www.hg6222.com | www.688dl.com | www.599160.com | 777hg333.com | 2222k11.com | 98955v.com | 800089v.com | 9995.cc | www.066116.com | www.zrdc2277.com | www.9925546.com | www.77785yh.com | www.yh66266.com | www.sygj5.com | www.303482.com | 854817.com | 38989f.com | 78365.com | 2hg7788.com | www.25288l.com | www.yingle99.com | www.4408598.com | www.r7766.com | www.hy5502.com | www.116205.com | 1463a.com | g40033.com | feicai0791.com | www.y22365.com | www.000xy8.com | www.094546.com | www.57578j.com | www.558363.com | 4880p.com | blr8844.com | 3844bb.com | www.77537f.com | www.g4042.com | www.56011b.com | www.2875s.com | www.106165.com | 982365.com | 9679c.com | www.55hggj.com | www.496649.com | www.7366008.com | www.66653j.com | www.533265.com | c558.cc | 36404400.com | www.yun770.com | www.23336.com | www.6687m.com | www.cp58870.com | www.wcp666888.com | 131zz.net | yh8899.bet | www.4938q.com | www.1168r.com | www.js02348.com | www.630155.com | 1770r.com | 8547o.com | www.365109b.com | www.894858.com | www.hg33382.com | www.558403.com | f7454.com | 7742q.com | www.6861767676.com | www.mgm868008.com | www.26878y.com | 99589o.net | dzj112.com | 32424j.com | www.2244-0880.com | www.55717j.com | www.627797.com | 8036x.com | 3245d.com | www.msc355.com | www.js58908.com | www.qm71.com | x5816.com | 88851e.com | www.sjg700.com | www.2566y6.com | www.849798.com | 505ooo.com | 56988s.com | www.73800.com | www.766777.cc | www.325826.com | 88021aa.com | 633248.com | www.27363v.com | www.50026x.com | tt6831.com | 316q.cc | www.pj9075.com | www.2566y5.com | www.598300.com | 13359455.com | www.xsj977.com | www.50999n.com | www.44050.cc | 9365.la | 2934i.com | www.3983079.com | www.3950.com | 655660011.com | 7240.com | www.585kk.com | www.hd8679.com | www.33598o.com | 4022kk.com | www.10050755.com | www.7240b.com | www.091181.com | cc4255.com | www.746128.com | www.99094z.com | www.055982.com | 2324hhh.com | www.jqb9.com | www.ykylc09.com | 9649y.com | 8381009.com | www.5349.com | www.61233f.com | 3788kk.com | 6830x.com | www.674886.com | www.c1669.com | 11772007.com | www.benz4400s.com | www.12136r.com | www.173225.com | 5019333.com | www.29019.com | www.07163r.com | 0729h.com | www.7435f.com | www.33678tt.com | www.198109.com | 7720j.net | www.msc555.com | www.3416b.com | 56978.com | www.39695w.com | www.yy888.cc | kkk5682.com | 2268jc.com | www.00772l.com | www.588703.com | 2324nnn.com | www.fzf058.com | www.022sx.cc | xgsaimahui.com | www.53589.com | www.172323.com | 33313h.com | www.fg3388.com | www.299770.com | 477074.com | hy5900.com | www.6687u.com | www.43131e.com | 2306k.com | www.848777u.com | www.288472.com | 11jj8331.com | www.365055.bet | www.424221.com | f423.com | www.caipiao88a.com | www.548411.com | 9694q.com | www.55545q.com | www.354918.com | 6764999.com | www.bwinyz17.com | www.128082.com | 314.cc | www.063801p.com | 4809d.com | ee360360.cn | www.4809p.com | 9103111.com | www.26777.cc | www.95333w.com | 11683377.com | www.348458.com | www.gczj3.com | hg10t.com | www.808888g.com | www.196309.com | 22296pp.com | www.68365h.com | ule607.com | www.pj7666.com | www.22603.cc | xxx67890.com | www.998855o.com | www.303467.com | 8290v.com | www.5599nsb.com | b7306.com | www.vns956.com | www.979zf.com | 3967f.com | www.8967z.com | www.29178a.com | www.kima99.net | www.743902.com | 84494466.com | www.3983079.com | www.533236.com | cpcp.com | www.55676h.com | 2643m.com | www.57798c.com | www.636550.com | 83377d.com | www.984707.com | 1098.cc | www.bet3650914.com | www.381860.com | vnsr11888.com | www.954321n.com | 31436688.com | www.138cpb.com | www.66332o.com | www.hg6969.net | www.50054m.com | 3467d.cc | www.b35rr.com | 11005y.com | www.0759563.com | www.812680.com | feicai0482.com | www.766777.cc | 69111y.com | www.d526688.com | 2140055.com | www.0860v.com | www.936317.com | 3202r.com | www.323535.com | 7893w08.com | www.0022xpj.net | 567zcp.com | www.180786.com | www.319989.com | www.amh50.com | www.3478w.cc | ying58.xyz | www.8003.com | 22933s.com | www.pj66119.com | 99909s.com | www.yh111888.com | www.50051i.com | www.7830p.com | www.810525.com | 9420k.com | www.5441e.com | 4131.com | www.0194001.com | 8159eee.cc | www.7036ll.com | 85850.com | www.77775309.com | hg088.cc | www.jcbo13.com | 168cp-h.com | www.n9163.com | www.43131y.com | www.54549944.com | www.394577.com | www.tushan38.com | www.895544.com | www.k8084.com | www.gu64.com | 2546x.com | www.5095o.com | 4997n.com | www.5522v.cc | 97799y.com | www.6364f.com |