0

使用 FileInfo 我可以找到 DataContext .dbml 文件的文件名。

前提是我声明:

Dim DataModel = New AttributeMappingSource().GetModel(GetType( NorthwindDataContext ))

使用 System.Data.LINQ.Mapping 我可以找到所有表的名称以及它们的列和关系。

这一切都要感谢 Jomo Fisher 的精彩帖子:LINQ to SQL Trick: Get all Table [and Column] Names: http://blogs.msdn.com/jomo_fisher/archive/2007/07/30/linq-to- sql-trick-get-all-table-names.aspx

但是如何在不明确知道 DataContext 对象的情况下获得相同的结果?我的意思是我该如何“替换”这个:

            GetType(NorthwindDataContext))

和:

            dim myDCFile as String = "Northwind.dbml"
            Dim DataModel = .../... GetType(myDCFile))
4

1 回答 1

0

你可以尝试这样的事情:

Assembly dataAssembly = Assembly.Load("Your.Data.Assembly");

Type dataContextType = dataAssembly.GetTypes()
           .FirstOrDefault(x => x.IsSubclassOf(typeof(DataContext)));

您基本上会加载您的数据程序集并搜索第一个数据类型,它是DataContext.

然后,您可以将其传递到您的方法中:

Dim DataModel = New AttributeMappingSource().GetModel(dataContextType)

马克

于 2009-07-26T18:19:45.883 回答