質問: 私は、クエリ内のvarbinaryフィールドの長さを見つけるためにクエリを使用することが可能であることがわかります。 エンティティフレームワークとVARBINARY しかし、Fluent APIのvarbinaryのサイズを取得するために、FileSizeプロパティをマップすることはできますか? いくつかのファイル情報をSQL Serverに保存できるようにしたい。このデータはファイル名、ファイルの内容です。これは、データモデル内で次のように定義されています。 ``` public class FileData { public int Id { get; set; } public string Filename { get; set; } public byte[] Contents { get; set; } } ``` 通常、FileDataを取得するときにコンテンツのサイズを知りたいと思っています。 FileDataにintプロパティFileSizeを追加した場合、このプロパティをマップしてサイズを計算できますか? 私はSQLでこれを設定できます: ![SQL計算長フィールド](https://i.stack.imgur.com/Jet2P.png) そして、私がテーブルに挿入すると、それは私に正しいサイズを与えます。 ただし、VS2015 - >新しい項目の追加 - > ADO.NETエンティティデータモデルを使用してデータモデル/ DbContextを生成すると、FileData POCOにはFileSizeプロパティのDatabaseGenerated(DatabaseGeneratedOption.Computed)アノテーションしかありません。私が追加したlen(Contents)の式は他には何も反映されていません。 このような計算列をEF6コードファーストを使用して構成することは可能ですか?
回答: エンティティフレームワークのコードで計算カラムを作成することはできません。あなたがそれを行う方法は正しいです、あなたは単に`DatabaseGenerated(DatabaseGeneratedOption.Computed)`属性をプロパティに入れ、 `Entity Framework`はあなたのために列を作成しようとせず、列を手動で作成します。あなたは手動でそれを変更する必要がないので、プロパティをプライベートにすることをお勧めします: ``` [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public int? FileSize {get; private set;} ```