2009-07-26 3 views
0

FileInfoを使用すると、DataContext .dbmlファイルのファイル名を見つけることができます。私はすべてのテーブルの名前を見つけることができますSystem.Data.LINQ.MappingでGetModel(メソッドGetType(NorthwindDataContext))LINQ to SQL:実行時に文字列ファイル名を使用してDataContextを作成する

点心のDataModel =新AttributeMappingSource(と:私は宣言提供

さらにそれらの列と関係。

ここジョモ・フィッシャーから優秀なポストへのすべてのこのおかげ:SQLトリックへのLINQ:すべての表[およびコラム】名を取得:http://blogs.msdn.com/jomo_fisher/archive/2007/07/30/linq-to-sql-trick-get-all-table-names.aspx

しかし、どのように私は明示的にDataContextオブジェクトを知らなくても、同じ結果を達成することができますか? 私は、この "置き換える" ことができる方法を意味する:あなたは基本的に自分のデータアセンブリと検索をロードし

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

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

:あなたはこのような何かを試みることができる

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

答えて

0

:で

  GetType(NorthwindDataContext)) 

をサブタイプである最初のデータタイプはDataContextです。

あなたは、あなたの方法にそれを渡すことができます。

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

マルク・

+0

おかげでマルク...しかし...あなたはコードスニペットをテストしたことがありますか? 私はVBの人であるため、コードを翻訳しました。 Dim dataAssembly As Assembly = Assembly.Load( "Your.Data.Assembly") Dim dataContextType As Type = dataAssembly.GetTypes()。FirstOrDefault() (typeContent) "は"(Type.GetType(DataContext) "に変換されています なぜか分かりますか?しかし、問題は今VBの主張は、(DataContext)の部分は、 "DataContextは型であり、式として使用することはできません"と述べています まだ殴られた...悲しいことに... –

+0

そして私は最後にTypeOf expressin VBのは言う: "期待されている" ... –

+0

私はC#のコードとしてそれをテストし、 はい。私はVBで翻訳に何が起こっているかを知るのに十分なほどではない。 –

関連する問題