2009-06-01 5 views
5

これはではなく、 DBNullとNULLについてです。私はその違いを理解しています。私は、nullはUser.EmailAddress ==がDBNullが正しいよう同じあるUser.EmailAddress ==をチェックし、User.EmailAddressにアクセスすることを言う、LINQのを使用していた場合、私が知りたいのですがどのようなLinqを使用する場合、DbNullはNullと同じですか?

はありますか?

私の推論は、データベースにデータがないとLinqはオブジェクト参照を生成しないという結果になります。つまり、Linqで使用するとnullが実際にはDBNullに相当します。

私の推論は正しいのですか?

+0

を追加し、私はそうは思いません。あなたの発見に基づいて、nullがDBNullと同じ場合は? – shahkalpesh

答えて

11

LinqToSqlでDBNullを使用しないでください。ポイントは言語統合であるため、nullのコンセプトや名前で十分です。

0

LINQ to SQLでは、DBNullではなくnullを使用する必要があります。 LINQ to SQLはORマッパーなので、ネイティブな方法でオブジェクトを処理します。 L2Sの全目標は、標準的な.NETの方法でオブジェクトを扱うことができるようにし、L2SがネイティブとDB固有のマッピングをすべて処理できるようにすることです。あなたはL2SステートメントでDBNullを使わないでください...実際には、それが有効なチェックであるかどうかもわかりません(おそらく動作しても何らかの奇妙な動作を引き起こすでしょう)。

+0

これは私が熟考してきた質問にも答えましたが、質問しませんでした:L2Sのポイントは何ですか? SQLを呼び出すのがとても簡単なときには、別の構文を学ばなければならないのは馬鹿だと私は思います(まだ)。しかし、少なくとも今、私はその理論的理由を理解しています.... – RolandTumble

+0

L2Sはオブジェクト・リレーショナル・マッパーです。 SQLを書くのは簡単ですが...手作業で(コードやストアドプロシージャに埋め込まれています)、コードの上に管理してバージョン管理する必要があります。 ORMのおかげで、ほとんどの場合、手動でSQLを書く必要がなくなります。これの利点は、オブジェクトまたはリレーショナル・スキーマが変更された場合、sqlが動的に適応することです。巨大な時間節約が可能で、変化するビジネス要件を満たすことができ、ビジネスの適応性/俊敏性を向上させることができます。 – jrista

2

Visual BasicのLINQ to SQLで動作するステートメント。私はそれがC#で同じだろうと仮定します。例えば

User.EmailAdress.Equals(Nothing) 

Dim EmptyEmailAddressEntries = From User in DC.Users _ 
    Where User.EmailAddress.Equals(Nothing) select User 

はあなたの電子メールアドレスには何もないすべてのユーザーを与えます。 「」スペースでのエントリのための文字を確認するためにのみ

それとも

User.EmailAddress = "" 
関連する問題