<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 55984y.com | 3178e.com | www.449555.com | 7508f.com | www.v32031.com | l67890.com | www.71399m.com | 85323.com | www.688824.com | www.53516n.com | 9599wm6.com | www.dingxin598.com | tl850.com | www.3552h.com | www.md005.com | www.186763.com | www.8582hh.com | 8381dd.com | www.299764.com | 22098t.com | www.65707g.com | www.sjs07.com | www.515049.com | www.hg55ff.com | 8905c.com | www.6880vv.com | 9068v.com | www.9818v.cc | www.29886v.com | 111122oo.com | www.55060e.com | 3775775.com | www.2588cai.com | www.88807v.com | 854817.com | www.7366008.com | z99345.am | www.986282.com | www.3tgpd.com | 9068tt.com | www.1754b.com | 777818b.com | www.786126.com | www.246778.com | 6868zz.cc | www.860505.com | www.jin444.com | www.83033i.com | www.55545e.com | 71626.com | www.975559.com | www.hg7644.com | fucaiwang.pw | www.c6378.com | www.345345.com | 00048m.com | www.07163d.com | www.2267111.com | tgf8876.vip | www.904029.com | www.365635.com | igcp.com | www.8977800.com | www.6175cc.com | 8290a.com | www.yh888b.com | 5003ggg.com | 2021b.com | www.761bbb.com | www.pj0004.com | man984.com | www.ee4625.com | bwin.com | 2649v.com | www.65707b.com | www.sss355.com | 20178.com | www.055h.cc | www.886242.com | 7192004.com | www.805357.com | www.1994365.com | 6363ii.com | www.320992.com | www.4996jx.com | www.81866x.com | 3078i.com | www.16065y.com | www.sun7708.com | 2490o.com | www.816820.com | www.85857f.com | 7720741.com | www.155091.com | www.xj7006.com | www.aa444.vip | 1213zzz.com | www.7515aa.com | www.tstsi.com | yt8801.com | www.126730.com | www.393089.com | 4631188.com | 3685p.com | www.70203d.cc | www.emc7677.com | 8015r.com | www.3479o.com | www.j99888.com | 7599z.com | www.587810.com | www.http://09991.com | www.6xinhao.com | 9068bb.com | www.089wy.com | www.50999g.com | www.111893.com | 3405ww.com | www.572899.com | www.1067777.com | www.255251.com | 418691.com | www.032059.com | www.3775j.com | www.hga8080.com | 747720.com | 28824f.com | www.jx68.com | www.i63568.com | www.pj990.com | 5443uu.com | 86811c.com | www.629965.com | www.xpj3133.cc | www.9969365.com | 2767d.com | 6076.com | www.398846.com | www.983258.com | www.899111.com | 88842949.com | 435796.com | fstppx.com | www.81699.cc | www.w84h.com | www.6y7y.cc | 9995i.cc | 3045522.com | www.61233v.com | www.50077c.com | www.10999d.com | www.144676.com | LXYL361.com | 2998r.com | zhcb2.com | www.9155h.cc | www.184533.com | www.412666.com | q2018q.com | 3950y.com | 00787.com | www.810609.com | www.99094.com | www.111msc.com | www.xpj8878.com | pj00jj.com | 9030.com | 2613p.com | www.5091i.com | www.wns123h.com | www.73999u.com | 500000370.com | 7616.cc | 5533412.com | www.5854u.cc | www.3w25.com | www.500128.com | www.hg098.com | wan0247.com | 68742.com | 717jc.com | www.c1825.com | www.188666.com | www.00778q.com | www.901690.com | www.7893w41.com | 768345.com | 6487ppp.com | 36517.info | 78118866.com | www.332750.com | www.0014r.com | www.hg0088.sh | www.4196g.com | www.2tyc.com | www.09569i.com | aipin33.me | 06389797.com | 54146633.com | 4737008.com | 3726o.com | 56988ff.com | 9789886.com | www.607325.com | www.kc19.com | www.68682q.com | www.5446o.com | www.dzj0770.com | www.3171114.com | www.kk2229.com | www.76543j.com | www.pu7777.net | 83086r.com | 80368w.com | p21148.com | aaa2267.com | dd00558.com | ffff0000.com | pj111177.com | 9103uu.com | m0084.com | www.258031.com | www.644680.com | www.yy63.com | www.66730.cc | www.376500hd.com | www.win1238.com | xx888a.com | www.5522o.cc | 00774vv.com | www.1111wnsr.com | www.y18bb.com | www.bd2019z.com | www.37377u.com | www.022tw.cc | 5001s.com | 40033qq.com | 08159g.com | www.ylhg5858.com | www.118sjz.cc | www.651928.com | www.50064x.com | www.512411.com | 1479l.com | 4255tt.com | www.pj35555.com | www.57798c.com | www.8080999j.com | www.2875y.com | 18775o.com | 999p1.cc | 11555002.com | www.858822.com | www.40288l.com | www.9356p.com | 11163366.com | 86226n.com | www.js50b.com | www.200228.com | www.1764l.com | www.989778.com | 3822u.com | 566777c.com | www.yinhecc77.com | www.68277333.com | www.81678s.com | www.258768.com | 6218d.com | 3187.com | www.68277222.com | www.85858hh.com | www.716866.com | 228888k.com | 4288d.com | www.wn2018.com | www.ty143.com | www.r999999.com | www.flcb4.com | s00351.com | 777818dh.com | www.vnsr388.com | www.m99365.com | www.789733.com | 3404s.cc | www.5559953.com | www.ggl.99233l.com | www.52072p.com | z444000.com | ff38648.com | www.pj7185.com | www.7036ll.com | www.602857.com | 2643z.com | www.hg8786.xyz | www.7415.com | www.c4529.com | 1005021.com | jnn006.com | www.79500p.com | www.5091s.com | 60956666.com | 4546vip9.com | www.16181b.com | www.ac9922.com | 1675ee.com | www.y1311.com | www.bwin940.co | www.qmkl1.com | bmw8099.com | www.kf318.com | www.hs066.com | www.811203.com | 0289e.com | www.vns6005.com | www.89386a.com | www.332037.com | 316960.com | www.00618t.com | www.91779.com | www.919509.com | dz825.com | www.68666w.com | www.97cp456.com | www.83993m.com | 9339999j.com | 9895s.com | www.ggs.99233s.com | www.50024g.com | 55899p.com | 28839f.com | www.vns3591.com | www.4331e.com | www.055975.com | vip7033.com | www.hp5868.com | www.5086f.com | 1389y.com | www.mgm777z.com | www.790964.com | uu4675.com | www.64400a.com | www.e3410.com | www.66652e.com | 3122m.com | www.sb5508.com | www.500285.com | 93922g.com | www.5604c.com | www.918109.com | 3950m.com | www.303800.com | www.7782n.com | 2709x.com | www.64821122.com | www.22yfa.com | 7893w9.com | www.23336.com | www.hcjt6.com | k60666.com | www.79888.com | www.782478.com | w8381.com | www.w3065.com | www.455745.com | 8956789.com | www.78888js.com | www.106573.com | j47479.com | www.60886h.com | 51200uu.com | www.343xpj.com | www.55545x.com | 1463q.com | www.32925.com | www.52005.cc | 0615002.com | www.hg7651.com | www.6832g.com | wfcp.com | www.3421n.com | www.26163d.com | 441679.com | www.d8867.com | www.9311c.com | 3304tt.com | www.53699.com | www.652699.com | 2851m.com | www.0022sun.com | 115478.com | www.hg6888.com | www.901176.com | 6118j.com | www.5446r.com | 2222ht.net | www.33354.com | www.876899.com | 111122qq.com | www.5953688.com | ii00558.com | www.55826rr.com | www.130511.com | www.pj5906.com | www.50732t.com | 4995v.com | www.9570115.com | 3121tt.com | www.153msc.com | www.547177.com | 00778x.com | www.7239.net | bet727.com | www.4196u.com | jidu3.com | www.777540.com | www.202430.com | www.85770g.com | www.5623c.com | br881.com | www.621233.com | 2767x.com | www.8967f.com | 2709f.com | www.282203.com | www.676zf.com | 00773uu.com | www.12136v.com | a62365.com | www.772345.com | www.aa3890.com | 56787hh.com | www.89677o.com | 6033c.com | www.rr8866.com | www.524077.com | www.8819819.com | www.25688c.com | pjhenan.com | www.xpj916.com | 08820066com | www.8313g.com | hb1432.com | www.4212r.com | 5504n.com | www.97060f.com | 70118a.com | www.caipiao88a.com | 027659.com | www.rr55826.com | amam8.com | www.5446ee.com | hg3457.com | www.64566d.com | 1775s.com | www.ldz333.com | w9620.com | www.3032mm.com | dd8662.com | www.184533.com | 04666o.com | www.668679.com | 33882007.com | www.80075f.com | bybc.com | www.81gcw.com | www.yh8007.com | www.647377.com | www.yinhe9507d.com | www.ck5589.com | www.md005.com | www.754918.com | www.7669k.net | www.890517.com | www.js96333.com | www.767200.com | www.1389m.com | www.572918.com | www.00618x.com | www.375793.com | www.3459w.com | www.175131.com | www.321329.com | 3568n.com | www.7334b.com | 7240mcom | www.3790011.com | 228888p.com | www.cf9905.com | www.56520d.com | bwin8x.com | www.3696699.com | 3616q.com | www.js89w.vip | 008.so | www.11gpc.com | www.9068vv.com | 3315.com | www.356061.com | c89od261.com | www.0270i.com | 454664.com | www.444237.com | www.336246.com | 88535g.com | www.s63568.com | 4023f.com | www.587810.com | www.hqg88.com | 5856ff.com | www.52062v.com | tz883.com | www.062wy.com | www.c22365.com | www.209881.com | www.9846d.com | feicai0453.com | www.47506w.com | t72227.com | www.5086f.com | www.h7788v.com | 78900.cc | www.bjl915.com | 2649zz.com | www.203035.com | www.dzcp4444.com | 6146j.com | www.c6569.com | www.538598.com | 898v.com | www.60007s.com | www.87680w.com | 7744ttt.com | www.66074.com | tt4675.com | js648888.com | www.44118v.com | m35151.com | 7720s.com | www.4058ee.com | 500000952.com | www.356387.com | www.my95.net | 36407733.com | www.hx5566.com | www.0860w.com | 2418k.com | www.69567e.com | 3089v.com | www.36788e.com | www.xy045.com | 98955r.com | www.503501.com | www.19019c.com | f5858.com | www.202370.com | www.15365d.com | 2381ggg.com | 99589o.net | www.pjh.com | www.81866s.com | 2805u.com | www.7434b.com | www.aa3143.com | drcp111.com | www.3479i.com | www.10852.com | 67890jj.com | www.565121.com | www.9b002.com | 123456bb.cc | 500000513.com | www.42842807.com | www.365815k.com | 6487www.com | www.zuan333.com | www.kjlhc.cc | ojbk188.com | www.586974.com | www.q32939.com | 3121y.com | www.142525.cc | www.45598l.com | 20771122.com | blm959.com | www.8582qq.com | www.453009.com | 39990066.com | www.394277.com | www.pj81619.com | www.vns3333.cc | yhw8.cc | www.755670.com | www.c69096.com | www.wi222.com | 998q.cc | www.707619.com | www.80188m.com | www.343xpj.com | 12742e.com | www.607256.com | www.c3410.com | www.8694f.com | 6943300.com | www.339208.com | www.5446m.com | www.06797r.com | 3482d.com | 8018522.com | www.55717y.com | www.b922.com | 38738733.com | www.550284.com | www.6789527.com | www.hggj.cc | 1389y.com | www.975559.com | www.h92776.com | 1082.com | 1331nn.com | www.377613.com | www.9971001.com | www.111358.com | 8030b.com | 5589q.com | www.914904.com | www.689660.com | www.pj2256.com | js99870.com | qjdy032.com | www.2109r.com | www.04567w.com | www.hgcn88.com | 3467r.com | xpj51333.com | www.089a.cc | www.4196g.com | www.vns343.com | mg437700.com | 2506o.com | www.9149f.com | www.50999r.com | js910.com | xinu222.com | www.235117.com | www.pj99m.com | www.479898.com | 8905s.com | 0332m.com | 50128c.com | www.5441u.com | www.781617.com | www.3657h.com | 500000717.com | 37775145.com | 4338099.com | www.fhfh8.com | www.3846gg.com | www.5118.cc | www.6686tk.cc | a32355.com | 8550500.com | www.216750.com | www.32123z.com | www.9895u.com | www.183008.com | qingshaonian.cn | 33382u.com | www.51515a.com | www.0601t.com | www.80969v.com | www.77537m.com | 33772007.com | 444144.com | www.91233o.com | www.77ckb.com | www.00765.com | www.3g88.com | www.333089.com | q5002.com | 3957o.com | 22889193.com | ribo60.cc | www.926730.com | www.7388101.com | www.694916.com | www.pj55585.com | www.2090922.com | pj6333.com | 67890d.com | hg91910.com | www.53900i.com | www.5095y.com | www.2234.cc | www.039907.com | www.3657c.com | 20167744.com | a81570.com | 131ggg.net | www.526820.com | www.3933g.cc | www.3790022.com | www.y6086.com | www.bd2019j.com | www.550js.com | www.3459q.com | 7375.com | 30174444.com | 41188833.com | pjguizhou.com | 55766.com | 2190n.com | www.344242.com | www.fcyl7.com | www.83033t.com | www.4361.co | www.866841.com | www.hg0477.com | www.6662558.com | 84497788.com | 5350x.com | 47749h.com | 3178k.com | www.176223.com | www.683944.com | www.6ttz.com | www.60339.cc | www.025155.com | www.8866kcd.com | www.4058ww.com | www.hg701.com | www.93036511.com | www.277577.com | www.17828k.com | www.5364d.com | www.benz4433s.com | www.555xin2.com | js333044.com | qycp10.com | 365vip400.cc | 01234nn.com | 721023.com | 8128522.com | betke.cc | www.055890.com | www.339132.com | www.550241.com | www.698300.com | www.905844.com | www.c139.vip | www.c6092.com | www.699by.com | www.2934p.com | www.8667v.com | www.45565.cc | www.33588l.com | www.68568g.com | www.76520x.com | www.88266b.com | www.80767w.com | www.80wb.top | www.798588.net | www.ddd2848.com | www.u80288.com | www.16181o.com | www.w948w.com | www.dz2899.com | www.304999.com | www.dh87087.com | www.84299.com | www.79890m.com | www.js2889.com | www.85088k.com | www.psb22.com | www.508345.com | www.896suncity.com | www.998855t.com | www.518175.com | www.00772w.com | www.7893.ag | www.b32031.com | www.07679x.com | www.zzyl63.com | www.fg9905.com | www.9971007.com | www.7886276.com | www.win1237.com | www.534331.com | www.533574.com | www.76520w.com | www.91233j.com | www.33588b.com | www.hr9888.com | www.594911.com | www.062166.com | 3844kk.com | w72227.com | 111cp.com | 51133x.com | 8547ff.com | 5002s.com | www.bet3650714.com | www.bl45.com | www.006087.com | www.425suncity.com | www.js297.com | www.034044.com | www.56655f.com | www.bet91482.com | www.883399h.com | www.7714r.com | www.2934g.com | www.599830.com | xpj70068.com | 33999193.com | 30173311.com | 8449ff.com | 63305c.com | www.21050022.com | www.567100.com | www.5966hhh.com | www.789ww.com | www.200068.com | www.0601r.com | www.2934l.com | www.547677.com | 2767t.com | 3404o.cc | wnsr8829.com | www.81866u.com | www.am9999.cc | www.063261.com | www.9895o.com | www.120158.com | www.445888a.com | www.97655u.com | 33599ee.com | 500000455com | 54241133.com | 4997e.com | www.an6988.com | www.4625gg.com | www.55526g.com | www.4521s.com | www.36787c.com | www.394577.com | js88830.com | 67890ooo.com | 32424z.com | www.feilipu4.com | www.009289.com | www.46976.com | www.w603.com | www.342877.com | 3552c.com | js222js.com | 8449ee.com | www.00217g.com | www.pj5559.com | www.818999.com | www.52062j.com | www.3126aa.com | 2012vip77.com | 678.com | 8905g.com | www.hg6613.com | www.t063801.com | www.07163z.com | www.368518.com | 555.bcbm555.com | 3662u.com | 3413222.com | www.87680m.com | www.a81f.cc | www.8866kcd.com | www.269777a.com | 76886a.com | 4136w.com | www.577628.com | www.50000991.com | www.6939q.com | www.535350.com | beiyong.bet | 2146r.com | www.cr1116.com | www.1389hh.com | www.07679r.com | www.hr7888.com | 500000797.com | 7893w32.com | www.758567g.com | www.899500.cc | www.97655j.com | www.003963.com | blr135.com | www.ao599.com | www.1168r.com | www.50054x.com | www.178125.com | c388u.com | 0068.cc | www.hgw00888.com | www.e3846.com | www.677375.com | yy4255.com | 8827ccc.com | www.62best.com | www.1666a.com | 8722bbbb.com | 30688z.com | www.t8003.com | www.4828998.com | www.2109d.com | jlykk.com | 655661166.com | www.58777h.com | www.19019c.com | www.2109j.com | 80850v.com | bl778877.com | www.77731j.com | www.9928d.com | 76543v.com | mgm3242w.com | www.900688.com | www.984701.com | www.401273.com | 6002x.com | www.k80282.com | www.16181f.com | www.000128a.com | 57157r.com | www.111xpj88.com | www.b30666.vip | www.896165.com | 07789.com | sss5144.com | www.858448.com | www.32123t.com | 66876p.com | vns22.vip | www.1168g.com | www.gczj6.com | 5003p.com | www.7338007.net | www.62979c.com | www.723095.com | 0241x.com | www.hd585.com | www.1030360.com | www.561502.com | 883399s.com | www.7025l.com | www.234567.pw | 64111g.com | feicai0571.com | www.tc8801.com | www.890886.com | 2677sss.com | www.hg5588.me | www.0048.com | www.318073.com | 4165t.com | www.xpj8337.com | www.60108p.com | 48886508.com | www.32126f.net | www.4j5.com | 500000972.com | by9911.com | www.600w.com | www.970331.com | 37111p.com | www.0860s.com | www.52011.tv | hhvip87.com | www.df997.com | www.087u.com | 500000730.com | 3207.com | www.4136x.com | www.966829.com | 4288f.com | www.9289988.com | www.12455k.com | shb777.com | www.sese25.com | www.33598s.com | pjguangdong.com | www.88807d.com | www.7886277.com | 4233.com | 8189891.com | www.5981k.com | www.606285.com | 7508o.com | www.38345u.com | www.310295.com | m47479.com | www.91779h.com | 55545f.com | le888m.com | www.a2894.com | 9339999r.com | 99932949.com | www.v94600.com | 35222pp.com | www.4107j.com | www.86267q.com | hkmh88.com | www.330099i.com | www.66332m.com | 22299oo.com | www.13789g.com | 2096g.com | 1288ss.com | www.xpj5.net | www.299078.com | 32212b.com | www.2061368.com | www.81520g.com | 131tt.net | www.7607633.com | www.007hy.cc | 7599gg.com | www.98698h.com | 7196t.com | www.7435v.com | www.0270d.com | 4255kkk.com | www.hg8247.com | www.c137.vip | 0069.com | www.45598m.com | 607044.com | www.pj1098.com | www.am7654.com | 28288ee.com | www.04567h.com | www.188393.com | www.dz829.com | www.4331f.com | 8722qqqq.com | www.331.cc | www.36166u.com | www.db2233.com | www.dyslot.com | 0485y.com | www.b4042.com | www.178135.com | bet36530000.com | www.87668l.com | 3559ff.com | www.5hg6668.com | 55ww8331.com | www.vns9983.com | www.68cc1.com | eee4255.com | www.9737cc.com | 6220tt.com | www.xpj2025.com | www.493351.com | 3844nn.com | www.ej158.com | u4212.com | www.3737.cc | www.60007a.com | www.67797r.com | www.998294.com | 83086s.com | www.950058.com | 2009666.com | www.b526688.com | 44698.com | www.v15594.com | www.572102.com | www.147891635.com | www.55885j.com | 40033e.com | www.1434d.com | 81366t.com |