2
我希望能夠編寫和更新我的數據庫,將對象發送到我的服務,然後讓服務動態決定要寫入或更新到數據庫的對象類型。使用LINQ在運行時從數據庫獲取數據
這是靜態地做這件事的時候(更新的例子),我做什麼
switch ((string)property.GetValue(oLinq, null))
{
case "news":
t_news oNews = (t_news)oLinq;
List<t_news> newsList = (from n in oDB.t_news where n.ID.Equals(oNews.ID) select n).ToList();
t_news oNe = newsList[0];
i = 0;
foreach (System.Reflection.PropertyInfo p in oNews.GetType().GetProperties().ToList())
{
if (p.GetValue(oNews, null) != null)
{
typeof(t_news).GetProperties().ToList()[i].SetValue(oNe, p.GetValue(oNews, null), null);
}
i++;
}
oNe.dLastUpdate = DateTime.Now;
oDB.SubmitChanges();
oLinq = (object)oNews;
break;
return oLinq;
ODB是我的DataContext。 oLinq只是一個包含我想要更新的數據的對象。 它包含一個字段,我在其中指定需要更新哪種表。 我使用開關箱來確定指定該表。 我現在有4種不同的情況,在這種情況下我幾乎完全相同。
但我希望能夠動態地做到這一點,所以我不必重寫所有這些代碼4次,並且能夠在將來添加新表格。
這就是我想:
List<string> alsTableNames = (from tables in oDB.Mapping.GetTables() select tables.TableName).ToList();
foreach (string sTableName in alsTableNames)
{
if (String.Compare(sTableName.Substring(6), (string)property.GetValue(oLinq, null)) == 0)
{
string sBasicType = sTableName.Replace("dbo.", "");
string sType = "RegisterService." + sBasicType;
Type tType = Type.GetType(sType);
oLinq = Convert.ChangeType(oLinq, tType);
該工程的oLinq對象轉換爲類型我想要的。 但是,不起作用的是從數據庫中獲取數據以將其替換爲新數據。 基本上,我需要一種方法來做到這一點,以動態方式:
List<t_news> newsList = (from n in oDB.t_news where n.ID.Equals(oNews.ID) select n).ToList();
t_news oNe = newsList[0];
喜歡的東西:
List<//type of the table I want> list = (from t in //table where t.//firstproperty.Equals(oLinq.getType().getProperties().toList()[0]) select t.ToList();
object oNewObj = list[0];
什麼想法?
C#泛型的列表其中T是表的類型你想 –
FiveTools
2012-04-18 15:27:34
列表類型是不是一個真正的問題,因爲我只想要一個對象從那個列表(與我發送的對象具有相同ID的那個oLinq對象) 因此,我可以將列表製作爲列表