如何检查对象是否为sql到linq类型

问题描述:

任何人都知道是否有任何简单的方法来检查对象是否为sql到linq类型?我有这样的方法,但希望它只接受有效的类型。如何检查对象是否为sql到linq类型

public static void Update(params object[] items) 
{ 
    using (TheDataContext dc = new TheDataContext()) 
    { 
     System.Data.Linq.ITable table; 

     if(items.Length > 0) 
      table = dc.GetTable(items[0].GetType()); 

     for (int i = 0; i < items.Length; i++) 
     { 
      table.Attach(items[i]); 
      dc.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, 
       items[i]); 
     } 

     dc.SubmitChanges(); 
    } 
} 

您将要访问从Mapping property on the DataContext instance返回的MetaModel实例。

因此,您可以调用GetTable方法,在当前的LINQ-to-SQL方案中支持要确定的模型类型。

请注意,这只是在模型,如果你想检查它是否存在于数据库中,那么这是一个不同的故事,你将不得不自己处理。但是,这并不难。从GetTable返回的MetaTable实例中,可以使用TableName property来获取数据库中存在的表的名称,然后根据模型上的映射来查询数据库中是否存在该表。

+0

好的,谢谢,但我正在寻找的是在Update(params对象[]项)中替换对象的东西,以便它只能使用linq表作为参数。 – remdao 2010-04-01 06:23:52

+0

@remado:我不明白你的意思。我给出的答案为您提供了可以检查对象类型的机制,以确保它们可以与LINQ一起使用。 – casperOne 2010-04-01 14:48:00