检查各自表中是否存在未知类型的LINQ实体

时间:2010-09-23 17:29:22

标签: vb.net linq

这是一个有趣的问题,我正在尝试检查其表中是否存在LINQ实体,但在设计时我不知道该实体是什么类型。所以我想我会得到这个表,并尝试使用Contains方法。但是我无法以这样的方式获得表格,以至于我可以在设计时查询它。

我在datacontext上尝试了GetTable方法,但是在使用GetTable(Of)时我不知道如何将它转换为适当的类型。 GetTable(Type)有效,我只使用Entity.GetType(),但后来我不知道如何查询返回的ITable

为了尝试将ITable转换为可用的东西,我创建了一个接口(IWhatever),它可以实现我将遇到的所有实体的本机属性。然后我尝试了CType(GetTable(Entity.GetType()), IEnumerable(Of IWhatever)))没有运气。

任何想法,或者我只是想完全错误?

示例:

Public Function EntityExists(ByVal Entity As Object, ByVal DataContext As MyDataContext) As Boolean
    Dim T as Type = Entity.GetType()

    Dim EntityITable as ITable = DataContext.GetTable(T)

    'Do something to see if ITable contains Entity    

End Function

2 个答案:

答案 0 :(得分:0)

我不知道vb.net的语法,所以我要做的就是C#:

public bool EntityExists<T>(T Entity, MyDataContext DataContext)
{    
    ITable<T> EntityITable  = DataContext.GetTable<T>();
    return EntityITable.Contains(Entity);
} 

我想,Vb.net会是这样的:

Public Function EntityExists(Of TEntity)(ByVal Entity As TEntity, _
                 ByVal DataContext As MyDataContext) As Boolean 

    Dim EntityITable as ITable(of TEntity) = DataContext.GetTable(of TEntity)()

    Return  EntityITable.Contains(Entity)
End Function

答案 1 :(得分:0)

最终结果:

Public Function EntityExists(Of TEntity As Class)(ByVal Entity As TEntity, ByVal DataContext As System.Data.Linq.DataContext)

    Dim EntityITable As System.Data.Linq.Table(Of TEntity) = DataContext.GetTable(Of TEntity)()
    If EntityITable.Contains(Entity) Then
        Return True
    Else
        Return False
    End If

End Function

可以使用:

Dim Exists As Boolean = EntityExists(Entity, DataContext)