public void Update() { #if !NET45 if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } #endif ClearDb(); using (SqlConnection conn = new SqlConnection(ConnectString)) { ISpider spider = new DefaultSpider("test", new Site()); SqlServerEntityPipeline insertPipeline = new SqlServerEntityPipeline(ConnectString); var metadata = new EntityDefine <ProductInsert>(); insertPipeline.AddEntity(metadata); insertPipeline.Init(); var data1 = new ProductInsert { Sku = "110", Category = "3C", Url = "http://jd.com/110", CDate = new DateTime(2016, 8, 13) }; var data2 = new ProductInsert { Sku = "111", Category = "3C", Url = "http://jd.com/111", CDate = new DateTime(2016, 8, 13) }; insertPipeline.Process(metadata.Name, new List <dynamic> { data1, data2 }, spider); SqlServerEntityPipeline updatePipeline = new SqlServerEntityPipeline(ConnectString); var metadat2 = new EntityDefine <ProductUpdate>(); updatePipeline.AddEntity(metadat2); updatePipeline.Init(); var data3 = conn.Query <ProductUpdate>($"use test;select * from sku_{DateTime.Now.ToString("yyyy_MM_dd")} where Sku=110").First(); data3.Category = "4C"; updatePipeline.Process(metadat2.Name, new List <dynamic> { data3 }, spider); var list = conn.Query <ProductInsert>($"use test;select * from sku_{DateTime.Now.ToString("yyyy_MM_dd")}").ToList(); Assert.Equal(2, list.Count); Assert.Equal("110", list[0].Sku); Assert.Equal("4C", list[0].Category); } ClearDb(); }
public void Update() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } ClearDb(); using (SqlConnection conn = new SqlConnection(ConnectString)) { ISpider spider = new DefaultSpider("test", new Site()); SqlServerEntityPipeline insertPipeline = new SqlServerEntityPipeline(ConnectString); var metadata = EntityDefine.Parse <ProductInsert>(); insertPipeline.AddEntity(metadata); insertPipeline.InitPipeline(spider); DataObject data1 = new DataObject { { "Sku", "110" }, { "Category", "3C" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; DataObject data2 = new DataObject { { "Sku", "111" }, { "Category", "3C" }, { "Url", "http://jd.com/111" }, { "CDate", "2016-08-13" } }; insertPipeline.Process(metadata.Name, new List <DataObject> { data1, data2 }); SqlServerEntityPipeline updatePipeline = new SqlServerEntityPipeline(ConnectString); var metadat2 = EntityDefine.Parse <ProductUpdate>(); updatePipeline.AddEntity(metadat2); updatePipeline.InitPipeline(spider); DataObject data3 = new DataObject { { "Sku", "110" }, { "Category", "4C" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; updatePipeline.Process(metadat2.Name, new List <DataObject> { data3 }); var list = conn.Query <ProductInsert>($"use test;select * from sku_{DateTime.Now.ToString("yyyy_MM_dd")}").ToList(); Assert.Equal(2, list.Count); Assert.Equal("110", list[0].Sku); Assert.Equal("4C", list[0].Category); } ClearDb(); }
public void UpdateWhenUnionPrimaryCheckIfSameBeforeUpdate() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } ClearDb(); using (SqlConnection conn = new SqlConnection(ConnectString)) { ISpider spider = new DefaultSpider("test", new Site()); SqlServerEntityPipeline insertPipeline = new SqlServerEntityPipeline(ConnectString); var metadata = EntitySpider.GenerateEntityDefine(typeof(Product2).GetTypeInfo()); insertPipeline.AddEntity(metadata); insertPipeline.InitPipeline(spider); var data1 = new DataObject { { "Sku", "110" }, { "Category1", "4C" }, { "Category", "3C" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; var data2 = new DataObject { { "Sku", "111" }, { "Category1", "4C" }, { "Category", "3C" }, { "Url", "http://jd.com/111" }, { "CDate", "2016-08-13" } }; insertPipeline.Process(metadata.Name, new List <DataObject> { data1, data2 }); SqlServerEntityPipeline updatePipeline = new SqlServerEntityPipeline(ConnectString, true); var metadata2 = EntitySpider.GenerateEntityDefine(typeof(Product2Update).GetTypeInfo()); updatePipeline.AddEntity(EntitySpider.GenerateEntityDefine(typeof(Product2Update).GetTypeInfo())); updatePipeline.InitPipeline(spider); var data3 = new DataObject { { "Sku", "110" }, { "Category1", "4C" }, { "Category", "AAAA" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; updatePipeline.Process(metadata2.Name, new List <DataObject> { data3 }); var list = conn.Query <Product2>($"use test;select * from sku2_{DateTime.Now.ToString("yyyy_MM_dd")}").ToList(); Assert.Equal(2, list.Count); Assert.Equal("110", list[0].Sku); Assert.Equal("AAAA", list[0].Category); } ClearDb(); }
public void Update() { ClearDb(); using (SqlConnection conn = new SqlConnection(ConnectString)) { ISpider spider = new DefaultSpider("test", new Site()); SqlServerEntityPipeline insertPipeline = new SqlServerEntityPipeline(ConnectString); var metadata = EntitySpider.GenerateEntityMetaData(typeof(ProductInsert).GetTypeInfo()); insertPipeline.AddEntity(metadata); insertPipeline.InitPipeline(spider); JObject data1 = new JObject { { "Sku", "110" }, { "Category", "3C" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; JObject data2 = new JObject { { "Sku", "111" }, { "Category", "3C" }, { "Url", "http://jd.com/111" }, { "CDate", "2016-08-13" } }; insertPipeline.Process(metadata.Name, new List <JObject> { data1, data2 }); SqlServerEntityPipeline updatePipeline = new SqlServerEntityPipeline(ConnectString); var metadat2 = EntitySpider.GenerateEntityMetaData(typeof(ProductUpdate).GetTypeInfo()); updatePipeline.AddEntity(metadat2); updatePipeline.InitPipeline(spider); JObject data3 = new JObject { { "Sku", "110" }, { "Category", "4C" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; updatePipeline.Process(metadat2.Name, new List <JObject> { data3 }); var list = conn.Query <ProductInsert>($"use test;select * from sku_{DateTime.Now.ToString("yyyy_MM_dd")}").ToList(); Assert.AreEqual(2, list.Count); Assert.AreEqual("110", list[0].Sku); Assert.AreEqual("4C", list[0].Category); } ClearDb(); }
public void Insert() { #if NETSTANDARD if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } #endif ClearDb(); using (SqlConnection conn = new SqlConnection(ConnectString)) { ISpider spider = new DefaultSpider("test", new Site()); SqlServerEntityPipeline insertPipeline = new SqlServerEntityPipeline(ConnectString); var metadata = new EntityDefine <ProductInsert>(); insertPipeline.AddEntity(metadata); insertPipeline.Init(); // Common data var data1 = new ProductInsert { Sku = "110", Category = "3C", Url = "http://jd.com/110", CDate = new DateTime(2016, 8, 13) }; var data2 = new ProductInsert { Sku = "111", Category = "3C", Url = "http://jd.com/111", CDate = new DateTime(2016, 8, 13) }; var data3 = new ProductInsert { Sku = "112", Category = null, Url = "http://jd.com/111", CDate = new DateTime(2016, 8, 13) }; // Value is null insertPipeline.Process(metadata.Name, new List <dynamic> { data1, data2, data3 }, spider); var list = conn.Query <ProductInsert>($"use test;select * from sku_{DateTime.Now.ToString("yyyy_MM_dd")}").ToList(); Assert.Equal(3, list.Count); Assert.Equal("110", list[0].Sku); Assert.Equal("111", list[1].Sku); Assert.Null(list[2].Category); } ClearDb(); }
public void Insert() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } ClearDb(); using (SqlConnection conn = new SqlConnection(ConnectString)) { ISpider spider = new DefaultSpider("test", new Site()); SqlServerEntityPipeline insertPipeline = new SqlServerEntityPipeline(ConnectString); var metadata = EntitySpider.GenerateEntityDefine(typeof(ProductInsert).GetTypeInfo()); insertPipeline.AddEntity(EntitySpider.GenerateEntityDefine(typeof(ProductInsert).GetTypeInfo())); insertPipeline.InitPipeline(spider); // Common data var data1 = new DataObject { { "Sku", "110" }, { "Category", "3C" }, { "Url", "http://jd.com/110" }, { "CDate", "2016-08-13" } }; var data2 = new DataObject { { "Sku", "111" }, { "Category", "3C" }, { "Url", "http://jd.com/111" }, { "CDate", "2016-08-13" } }; // Value is null var data3 = new DataObject { { "Sku", "112" }, { "Category", null }, { "Url", "http://jd.com/111" }, { "CDate", "2016-08-13" } }; insertPipeline.Process(metadata.Name, new List <DataObject> { data1, data2, data3 }); var list = conn.Query <ProductInsert>($"use test;select * from sku_{DateTime.Now.ToString("yyyy_MM_dd")}").ToList(); Assert.Equal(3, list.Count); Assert.Equal("110", list[0].Sku); Assert.Equal("111", list[1].Sku); Assert.Null(list[2].Category); } ClearDb(); }
public override void DataTypes() { if (!Env.IsWindows) { return; } using (var conn = new SqlConnection("Server=.\\SQLEXPRESS;Database=master;Trusted_Connection=True;MultipleActiveResultSets=true")) { try { conn.Execute("create database test;"); } catch { } try { conn.Execute("USE [test]; drop table [test].dbo.[table15]"); } catch { } var pipeline = new SqlServerEntityPipeline("Server=.\\SQLEXPRESS;Database=master;Trusted_Connection=True;MultipleActiveResultSets=true"); var resultItems = new ResultItems(); resultItems.Request = new Request(); resultItems["aaa"] = new List <Entity15> { new Entity15 { Int = 1, Bool = true, BigInt = 11, String = "aaa", Time = new DateTime(2018, 06, 12), Float = 1, Double = 1, String1 = "abc", String2 = "abcdd", Decimal = 1 } }; pipeline.Process(new ResultItems[] { resultItems }, null); var columns = conn.Query <ColumnInfo>("USE [test];select b.name Name,c.name+'(' + cast(c.length as varchar)+')' [Type] from sysobjects a,syscolumns b,systypes c where a.id=b.id and a.name='table15' and a.xtype='U'and b.xtype=c.xtype").ToList(); Assert.Equal(15, columns.Count); Assert.Equal("creation_date".ToLower(), columns[0].Name); Assert.Equal("int".ToLower(), columns[1].Name); Assert.Equal("time".ToLower(), columns[2].Name); Assert.Equal("creation_time".ToLower(), columns[3].Name); Assert.Equal("float".ToLower(), columns[4].Name); Assert.Equal("double".ToLower(), columns[5].Name); Assert.Equal("bool".ToLower(), columns[6].Name); Assert.Equal("decimal".ToLower(), columns[7].Name); Assert.Equal("bigint".ToLower(), columns[8].Name); Assert.Equal("string".ToLower(), columns[9].Name); Assert.Equal("string1".ToLower(), columns[10].Name); Assert.Equal("string2".ToLower(), columns[11].Name); Assert.Equal("date(3)", columns[0].Type); Assert.Equal("int(4)", columns[1].Type); Assert.Equal("datetime(8)", columns[2].Type); Assert.Equal("datetime(8)", columns[3].Type); Assert.Equal("float(8)", columns[4].Type); Assert.Equal("float(8)", columns[5].Type); Assert.Equal("bit(1)", columns[6].Type); Assert.Equal("decimal(17)", columns[7].Type); Assert.Equal("bigint(8)", columns[8].Type); Assert.Equal("nvarchar(8000)", columns[9].Type); Assert.Equal("nvarchar(8000)", columns[10].Type); Assert.Equal("nvarchar(8000)", columns[11].Type); conn.Execute("USE [test]; drop table [test].dbo.[table15]"); } }
public override void DataTypes() { if (!Env.IsWindows) { return; } using (var conn = new SqlConnection("Server=.\\SQLEXPRESS;Database=master;Trusted_Connection=True;MultipleActiveResultSets=true")) { try { conn.Execute("create database test;"); } catch { } try { conn.Execute("USE [test]; drop table [test].dbo.[table15]"); } catch { } var spider = new DefaultSpider(); EntityProcessor <Entity15> processor = new EntityProcessor <Entity15>(); var pipeline = new SqlServerEntityPipeline("Server=.\\SQLEXPRESS;Database=master;Trusted_Connection=True;MultipleActiveResultSets=true"); var resultItems = new ResultItems(); resultItems.Request = new Request(); resultItems.AddOrUpdateResultItem(processor.Model.Identity, new Tuple <IModel, IEnumerable <dynamic> >(processor.Model, new dynamic[] { new Dictionary <string, dynamic> { { "int", "1" }, { "bool", "1" }, { "bigint", "11" }, { "string", "aaa" }, { "time", "2018-06-12" }, { "float", "1" }, { "double", "1" }, { "string1", "abc" }, { "string2", "abcdd" }, { "decimal", "1" } } })); pipeline.Process(new ResultItems[] { resultItems }, spider); var columns = conn.Query <ColumnInfo>("USE [test];select b.name Name,c.name+'(' + cast(c.length as varchar)+')' [Type] from sysobjects a,syscolumns b,systypes c where a.id=b.id and a.name='table15' and a.xtype='U'and b.xtype=c.xtype").ToList(); Assert.Equal(15, columns.Count); Assert.Equal("creation_date".ToLower(), columns[0].Name); Assert.Equal("int".ToLower(), columns[1].Name); Assert.Equal("time".ToLower(), columns[2].Name); Assert.Equal("creation_time".ToLower(), columns[3].Name); Assert.Equal("float".ToLower(), columns[4].Name); Assert.Equal("double".ToLower(), columns[5].Name); Assert.Equal("bool".ToLower(), columns[6].Name); Assert.Equal("decimal".ToLower(), columns[7].Name); Assert.Equal("bigint".ToLower(), columns[8].Name); Assert.Equal("string".ToLower(), columns[9].Name); Assert.Equal("string1".ToLower(), columns[10].Name); Assert.Equal("string2".ToLower(), columns[11].Name); Assert.Equal("date(3)", columns[0].Type); Assert.Equal("int(4)", columns[1].Type); Assert.Equal("datetime(8)", columns[2].Type); Assert.Equal("datetime(8)", columns[3].Type); Assert.Equal("float(8)", columns[4].Type); Assert.Equal("float(8)", columns[5].Type); Assert.Equal("bit(1)", columns[6].Type); Assert.Equal("decimal(17)", columns[7].Type); Assert.Equal("bigint(8)", columns[8].Type); Assert.Equal("nvarchar(8000)", columns[9].Type); Assert.Equal("nvarchar(8000)", columns[10].Type); Assert.Equal("nvarchar(8000)", columns[11].Type); conn.Execute("USE [test]; drop table [test].dbo.[table15]"); } }