EFを使用してコーディングしたい既存のデータベース(変更することはできません)があります。主キー、外部キー、またはテーブル間の実際の関係はありません。すべてがDBを使用するアプリケーションによって処理されるようです。ほとんどのテーブル/エンティティにとって、これは些細なことです。しかし、私が苦労している以下のような(簡略化された)クラスが1つあります。
[Table("tableName")]
public class MyClass
{
[Key]
[Column("id")]
public int? Id { get; set; }
[Column("name")]
public string CompanyName { get; set; }
[Column("address")]
public string Address { get; set; }
}
_context.MyClasses.Where(x => x.Address == "something")
うまくいくようなもの。ただし、DBでid列がNULLの場合、CompanyNameとAddressに値がある場合でも、nullオブジェクトが返されるようです。そして、id(または他のもの)がnullであるかどうかに関係なく、これらの値が必要です。EFにオブジェクトを生成させ、空の列を無視させる方法はありますか?
[Key]属性を削除または移動すると、「キー列が必要」などの例外が発生します(Id-columnは、他のクラスのコレクションをこのクラスにマップするためにも使用されます)。
更新Id列を実際の識別子とは考えないでください。それは基本的には愚かな名前の整数です。