私はLinq to SQLを使って作業しています。私のアプリケーションとSQLサーバの間のブリッジとして機能する.dbmlファイルを追加することによって、私はちょうど.dbmlを使用せずにLinqをSQLに使用する方法があるのか不思議ですファイル?私は同じためにLink hereを見つけましたが、それは理解できないことです。.dbmlファイルを追加せずにLinqをSQLに使用する方法はありますか?
答えて
コンテキストのプロパティ(context.TableName
)を使用してクエリする必要がある場合は、NOです。
クラスは、自動または手動のいずれかの場所で生成する必要があります(Entity Framework Code First Approach)。
しかし、コンテキストをすることができます魔法はありません持っているあなたは、独自のクラスを作成することができ、
ただし[あなたのケースでDBMLの一部である]生成されたクラスファイル(複数可)なしですべてのテーブルTableAttribute
を使用してください。これは、dbmlが何をしているのかを手動で複製することです。この詳細については、linkをご確認ください。
上記のリンクからいくつかの例:
[Table]
public class Customer
{
[Column(IsPrimaryKey=true)]
public int ID;
[Column]
public string Name;
}
public class DemoDataContext : DataContext
{
public DemoDataContext (string cxString) : base (cxString) { }
public Table<Customer> Customers { get { return GetTable<Customer>(); } }
public Table<Purchase> Purchases { get { return GetTable<Purchase>(); } }
}
使用法:もちろん
var db = new DataContext();
var customers = db.GetTable<Customer>();
var query = customers.Where (c => c.Name.StartsWith ("a"));
はい。実際にLINQ-to-Sqlを初めて学んだとき、dbmlファイルのボイラープレートによる自動生成コードは実際には最初は消化するには多すぎました。だから自分のPOCOクラスを一つずつ飾り始めてから、LINQクエリを書くことを学び始めました。
Customerという名前の1つのテーブルを持つデータベース "businessLinqToSql"を作成しました。以下のSQLスクリプトを使用してください:
USE [businessLinqToSql]
GO
/****** Object: Table [dbo].[Customer] Script Date: 06/17/2016 11:28:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[ID] [int] NOT NULL,
[Name] [nchar](30) NOT NULL,
[Address] [nchar](30) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
C#コンソールアプリケーションを作成し、以下のようにCustomer.csという名前のコードファイルを追加します。そして、あなたはあなたの主な機能でLINQクエリの下に書くことができます
[Table(Name="Customer")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public int ID { get; set; }
[Column]
public string Name { get; set; }
[Column]
public string Address { get; set; }
}
:それは、LINQツーSQLプロバイダにデータベースのスキーマに関するヒントを与えるいくつかの宣言型の属性であなたのPOCOクラスになります
private static void LinqToSql()
{
DataContext dataContext = new DataContext("data source=.;initial catalog=businessLinqToSql;integrated security=True;MultipleActiveResultSets=True");
Table<Customer> customers = dataContext.GetTable<Customer>();
IQueryable<string> query = from c in customers
where c.Name.Length > 5
orderby c.Name.Length
select c.Name.ToUpper();
foreach (string name in query) Console.WriteLine(name);
}
説明すると、System.Data.Linqアセンブリを参照する必要があります。 –
- 1. コマンドタイムアウトをdbml(Linq-to-SQLデータクラス)にバインドする方法はありますか?
- 2. 構成ファイルを使用せずにプログラムでmaxItemsInObjectGraphを追加する方法はありますか?
- 3. Git:サブモジュールを複製せずに追加する方法はありますか?
- 4. IBを使用せずにUIViewControllerにTableView Controllerをサブビューとして追加する方法はありますか?
- 5. アップルの開発者ポータルを使用せずにプロビジョニングプロファイルにデバイスを追加する方法はありますか?
- 6. <tr>タグを使用せずにテーブルに行を追加する方法はありますか?
- 7. .uiファイルを使用せずにlibQGLViewerからビューアを追加する方法
- 8. LinqをOracleに使用する方法はありますか
- 9. WinjSライブラリを使用せずにUniversal Windowsアプリケーションでボタンイベントを追加する方法はありますか?
- 10. クラスをテーブル要素に追加せずに要素にCSSを適用する方法はありますか?
- 11. @ angle/routerを使用せずにクエリパラメータを追加する方法
- 12. LINQとdbmlファイル
- 13. LinqからSQL Dbmlファイルを管理するためのベストプラクティス?
- 14. パッケージをインストールせずにPostSharpを使用する方法はありますか
- 15. SQLでユニーク/プライマリキーキーワードを使用せずにテーブルにデータを一意に挿入する方法はありますか?他の方法はありますか?
- 16. PHPでは、ファイルをロードせずにファイルに行を追加する方法は?
- 17. PHPを使用して改行を追加せずにファイルに追加する
- 18. ワークシートを追加する方法\ワークシートを共有Excelファイルに追加する方法はありますか?
- 19. インポート/エクスポートウィザードを使用せずにSQLからデータをエクスポートする方法はありますか?
- 20. テーブルをdbmlファイルにドラッグすると、LINQ to SQL dbmlがテーブルをdbmlファイルにドラッグするときに停止する
- 21. デスクトップバージョンやコマンドラインを使用せずにファイルをGithubにインポートする方法はありますか?
- 22. SQLクエリを使用せずにデータベースへのアクティブな接続を検出する方法はありますか?
- 23. UDIDを追加せずにクライアントにアプリを配布する方法はありますか?
- 24. grailsドメインクラスにdbフィールドデータを追加せずにジェネリックタイプを取得する方法はありますか?
- 25. Flash IDEを使用せずにFLAファイルからFlash 9 SWFを構築する方法はありますか?
- 26. powershellを使用してSQLサーバーロールにユーザーを追加する方法はありますか。
- 27. スパークSQLを使用して、グループベースの後にスパースベクトルを追加する方法はありますか?
- 28. LINQ to SQLのプロジェクトにDBファイルを追加する必要はありますか?
- 29. MVC Visual Studioにモデルフォルダの.dbmlファイルを追加します。
- 30. パンダでは、新しい列を追加せずにインデックスをリセットする方法はありますか?
[this](http://stackoverflow.com/questions/31425715/how-to-use-linq-to-sql-without-having-to-generate-all-the-classes)で提案されているような解決策を意味しますか? )だから質問? –
* Link *で言及されているアプローチは、DBテーブルの属性を手動で記述することによって、DBMLファイルを消費するのと同じアプローチを採用しています。唯一の差異。は、.DBMLファイルを自動的に作成するためにドラッグアンドドロップしていません。 – Lucky
これを参照して、この[リンク](http://forums.asp.net/t/1465242.aspx?Can+you+use+Linq+without+DBML+file+)から詳細を見つけることができます。 –