2010-12-23 23 views
0

Asp.net MVCプロジェクトでエンティティデータモデルフレームワークを使用しています。テーブルにデータベースが存在し、モデルに存在しないかどうかを確認する必要があります。どのようにして、テスト目的でコントローラレベルでチェックするかを手助けできますか?データベースにテーブルが存在し、モデルに存在しないことを確認してください

答えて

2

使用しているデータベースについては言及していませんが、SQL Serverと仮定します。

は、ここでは、テーブルのリストを取得する方法は次のとおりです。

USE YourDBName 
GO 
SELECT * 
FROM sys.Tables 

あなたはクエリを実行するためにAdo.Netを使用することができますか、あなたのエンティティデータモデルにテーブルのテーブルを追加することができます。

更新

ここにいくつかの方法があります。ニーズに合わせて調整する必要があるかもしれません。

[dbo]。[sysobjects]には、データベース内に作成された制約、テーブル、ビュー、ストアドプロシージャ、関数などのオブジェクトごとに1つの行が含まれています。オブジェクトのタイプを判別するには、オブジェクトタイプを含む[xtype]列を照会します。ユーザテーブルの場合、[xtype]値はユーザテーブルを表す 'U'です。

SELECT [Name] FROM [dbo].[sysobjects] 
WHERE [xtype] = 'U' 

2番目の方法は[Information_Schema]。[Tables]システムビューを照会することです。 [Information_Schema]。[Tables]システムビューには、現在のユーザーがアクセス権を持つ現在のデータベース内の各テーブルの行が1つ含まれています。このviwは[dbo]。[sysobjects]システムテーブルに基づいています。 [Information_Schema]。[Tables]システムビューには、リスト内のビューも含まれます。

SELECT * FROM [Information_Schema].[Tables] 
WHERE [Table_Type] = 'BASE TABLE' 

にユーザー表を一覧表示する第3の方法:だけユーザーテーブルをフィルタリングするには、あなただけの出力には、次のクエリからわかるように、[TABLE_TYPE]、「ベーステーブル」であるレコード意志データベースはsp_tablesシステムストアドプロシージャを使用して行われます。 sp_tablesシステムストアドプロシージャは、FROM句に表示されるオブジェクトのリストを返します。あなたは、次のクエリからわかるように、あなたが、「『TABLE』」に@table_typeパラメータを設定する必要があり、ユーザテーブルのみではなく、システム・テーブルまたはビューと懸念しているので:

EXEC sp_tables @table_type = "'TABLE'" 
+0

うーん..クエリから私たちはすべてのテーブルのリストを取得すると述べましたが、モデルにはなくデータベースにあるテーブルのリストだけを取得する必要があります。 – SKumar

+0

私はあなたの答えを更新しました。さらに詳しい説明が必要な場合は、再度コメントしてください。 – rboarman

関連する問題