LINQ to SQL:使用字符串文件名在运行时创建 DataContext

发布于 2024-07-29 07:16:19 字数 843 浏览 5 评论 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))

With FileInfo I can find the file name of a DataContext .dbml file.

Provided I declare:

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

With System.Data.LINQ.Mapping I can find the name of all Tables and furthermore their Columns and relationships.

All this thanks to the excellent post from Jomo Fisher here: 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

But how can I achieve same result without explicitly knowing the DataContext Object?
I mean how can i "replace" this:

            GetType(NorthwindDataContext))

With:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ζ澈沫 2024-08-05 07:16:19

您可以尝试这样的操作:

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

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

您基本上会加载数据程序集并搜索作为 DataContext 子类型的第一个数据类型。

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

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

Marc

You could try something like this:

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

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

You would basically load your data assembly and search for the first data type that is a subtype of DataContext.

You could then pass that into your method:

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

Marc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文