2 using System.Collections.Generic;
\r
6 using NUnit.Framework;
\r
7 using Test_NUnit.Linq_101_Samples;
\r
8 using System.Data.Linq;
\r
14 namespace Test_NUnit_MySql
\r
16 namespace Test_NUnit_OracleODP
\r
18 namespace Test_NUnit_Oracle
\r
20 namespace Test_NUnit_PostgreSql
\r
22 namespace Test_NUnit_Sqlite
\r
24 namespace Test_NUnit_Ingres
\r
25 #elif MSSQL && L2SQL
\r
26 namespace Test_NUnit_MsSql_Strict
\r
28 namespace Test_NUnit_MsSql
\r
30 namespace Test_NUnit_Firebird
\r
34 public class Table : TestBase
\r
37 public void BasicAccess()
\r
39 var db = CreateDB();
\r
40 var customers = db.Customers.ToArray();
\r
43 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
47 public void GetModifiedMembers()
\r
49 var db = CreateDB();
\r
50 var customer = db.Customers.First();
\r
52 string beforeCountry = customer.Country;
\r
53 string afterCountry = "Spain";
\r
54 customer.Country = afterCountry;
\r
56 string beforeFax = customer.Fax;
\r
57 string afterFax = "4823-435-6456";
\r
58 customer.Fax = afterFax;
\r
60 ModifiedMemberInfo[] modifiedInfoList = db.Customers.GetModifiedMembers(customer);
\r
61 Assert.AreEqual(modifiedInfoList.Count(), 2);
\r
63 ModifiedMemberInfo modInfo = modifiedInfoList.First();
\r
64 Assert.AreEqual(modInfo.Member, typeof(Customer).GetProperty("Country"));
\r
65 Assert.AreEqual(modInfo.CurrentValue, afterCountry);
\r
66 Assert.AreEqual(modInfo.OriginalValue, beforeCountry);
\r
68 modInfo = modifiedInfoList.ElementAt(1);
\r
69 Assert.AreEqual(modInfo.Member, typeof(Customer).GetProperty("Fax"));
\r
70 Assert.AreEqual(modInfo.CurrentValue, afterFax);
\r
71 Assert.AreEqual(modInfo.OriginalValue, beforeFax);
\r
74 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
78 public void GetOriginalEntityState()
\r
80 var db = CreateDB();
\r
81 var customer = db.Customers.First();
\r
83 string beforeCountry = customer.Country;
\r
84 string afterCountry = "Spain";
\r
85 customer.Country = afterCountry;
\r
87 string beforeFax = customer.Fax;
\r
88 string afterFax = "4823-435-6456";
\r
89 customer.Fax = afterFax;
\r
91 var originalCustomer = db.Customers.GetOriginalEntityState(customer);
\r
92 Assert.AreEqual(originalCustomer.Fax, beforeFax);
\r
93 Assert.AreEqual(originalCustomer.Country, beforeCountry);
\r
98 //public void IsReadOnly()
\r
100 // var db = CreateDB();
\r
101 // db.ObjectTrackingEnabled=false;
\r
102 // db.Customers.ToArray();
\r
103 // Assert.IsFalse(db.Customers.IsReadOnly);
\r
105 // var db2 = CreateDB();
\r
106 // db2.ObjectTrackingEnabled = true;
\r
107 // db2.Customers.ToArray();
\r
108 // Assert.IsTrue(db2.Customers.IsReadOnly);
\r
111 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
115 public void Attach01()
\r
117 var db = CreateDB();
\r
118 var customer = new Customer();
\r
119 db.Customers.Attach(customer);
\r
121 Assert.IsFalse(db.Customers.Contains(customer));
\r
124 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
128 [ExpectedException(typeof(NotSupportedException))]
\r
129 public void Attach02()
\r
131 var db = CreateDB();
\r
132 var customer = new Customer();
\r
133 db.Customers.Attach(customer);
\r
135 Assert.IsFalse(db.Customers.Contains(customer));
\r
136 var db2 = CreateDB();
\r
137 db2.Customers.Attach(customer);
\r
140 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
144 [ExpectedException(typeof(InvalidOperationException))]
\r
145 public void Attach03()
\r
147 var db = CreateDB();
\r
148 db.ObjectTrackingEnabled = false;
\r
149 var customer = new Customer();
\r
150 db.Customers.Attach(customer);
\r
153 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
157 public void Attach04()
\r
159 var db = CreateDB();
\r
160 var originalCustomer = db.Customers.First();
\r
161 var customer = new Customer();
\r
162 db.Customers.Attach(customer, originalCustomer);
\r
164 Assert.Greater(db.Customers.GetModifiedMembers(customer).Count(), 0);
\r
167 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
171 [ExpectedException(typeof(InvalidOperationException))]
\r
172 public void Attach05()
\r
174 var db = CreateDB();
\r
175 var customer = new Customer();
\r
176 db.Customers.Attach(customer, true);
\r
179 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
183 public void Attach06()
\r
185 var db = CreateDB();
\r
186 var customer = new Customer();
\r
187 //http://geekswithblogs.net/michelotti/archive/2007/12/17/117791.aspx
\r
188 //we have to do a test related with that stuff, but we need to change all of datacontexts
\r
194 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
198 public void AttachAll()
\r
200 var db = CreateDB();
\r
201 var customers = new Customer[] { new Customer { CustomerID = "ID1" }, new Customer { CustomerID = "ID2" } };
\r
202 db.Customers.AttachAll(customers);
\r
204 Assert.IsFalse(customers.Any(c => db.Customers.Contains(c)));
\r
208 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
\r
212 public void GetBindingList()
\r
214 var db = CreateDB();
\r
215 var customers = db.Customers.GetNewBindingList();
\r
217 Assert.AreEqual(customers.Count, db.Customers.Count());
\r
220 [Description("Check direct use of DataContext instead of typed DataContext")]
\r
222 public void T1_DirectDataContext()
\r
224 var db = CreateDB();
\r
228 System.Data.Linq.DataContext(db.Connection);
\r
230 DbLinq.Data.Linq.DataContext(db.Connection, CreateVendor());
\r
233 var dbq = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
\r
234 var dbc = dbq.ToList().Count;
\r
235 Assert.AreEqual(dbc, 1);
\r
237 var dcq = from p in dc.GetTable<Product>() where p.ProductName == "Chai" select p.ProductID;
\r
238 var dcc = dcq.ToList().Count;
\r
239 Assert.AreEqual(dbc, 1);
\r