次の例を検討してください。
SQL テーブルの顧客:
ID: Primary Key
Name: Name
SQL ビュー ViewCustomerSelection:
ID: Link to Customer ID
SomeOption: Not important
ViewCustomerSelection に対応する値を持つ顧客のみを選択する ADO.NET エンティティを作成したいと思います
以下は機能しません:
- ViewCustomerSelection の条件やフィールドを使用せずに Customer および ViewCustomerSelection にマップするエンティティを作成します。 ViewCustomerSelection は SQL に含まれず、すべての顧客が返されます。
- ViewCustomerSelection からのフィールドを含めます: 正しい選択が返されますが、現在 Customer オブジェクトは更新できません
- SomeOption フィールドに「null 以外」の条件を指定します: エラー - 「'IsNull=false' 条件のプロパティ ViewCustomerSelection.SomeOption をマップする必要があります。
- ViewCustomerSelection.ID フィールドに「null 以外」の条件を指定します: エラー - 「エンティティ タイプの主キーに条件が含まれています。マッピングから条件を削除してください。
明確化
データベース定義:
create table Customer {
ID [int] IDENTITY(1,1) NOT NULL,
Name [varchar](50) NOT NULL
} CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
create table ViewCustomerSelection
as select customer.id, ToUpper(customer.name) as SomeOption where customer.name like 'A%'
ViewCustomerSelection に存在するレコードのレコードのみを持つ、ID と名前を持つエンティティ Customer が必要です (実際には、ビューはより複雑であり、単純な条件を使用して表現することはできません)。