4

私はC#を学習しています。ネットワークスキャンプロジェクトでは、IPアドレスをバイナリとしてSQL Serverに保存する必要があります。エンティティフレームワークはSQL ServerにバイナリとしてIPを保存します

しかし、私はかなり新しいですが、EF6にそのことを伝える方法についてはかなり混乱しています。

私はコード内で可変タイプIPAddressを使用していると考えましたが、EFはこれをBIGINTとして保存します(コードファーストを使用)。

私はそれをバイト[]にして、ゲッターとセッターを使ってバイナリをIPAddressタイプに変換することができると思いますか?

また、BINARYにデータアノテーションを使用するように指示することはできますか?手動で変換する必要がありますか?

誰かが私にそれを明確にしてもらえますか?

私はデータベースに多くのIPを保存するので、可能な限り最良の方法でそれらを保存します。

ありがとうございます!

+0

using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Net; [Required, MinLength(4), MaxLength(16)] public byte[] IPAddressBytes { get; set; } [NotMapped] public IPAddress IPAddress { get { return new IPAddress(IPAddressBytes); } set { IPAddressBytes = value.GetAddressBytes(); } } 
ない完全な答えが、IP4のための:(4) '' http://stackoverflow.com/a/1385701/2333499バイナリを使用し、 'SqlDbType.Binary' – SqlZim

答えて

6

IP v4アドレスは4バイト、IP v6アドレスは16バイトなので、varbinary(16)フィールドとして格納します。あなたの質問タグから.Netを使用しているので、IPAddress.GetAddressBytes()を使ってこれらのバイトを簡単に取得できるようになります。次のコードは、Entity Frameworkを使用すると便利です。

+1

これはあきれるほど簡単であるとともに、パラメータを渡します - .- ' 完璧なソリューション!ありがとう! :-) – soomon

関連する問題