1

考虑以下示例:

SQL 表客户:

ID: Primary Key
Name: Name

SQL 视图 ViewCustomerSelection:

ID: Link to Customer ID
SomeOption: Not important

我想创建 ADO.NET 一个仅选择在 ViewCustomerSelection 中具有相应值的客户的实体

以下不起作用:

  • 创建映射到 Customer 和 ViewCustomerSelection 的实体,而不使用 ViewCustomerSelection 中的任何条件和任何字段: ViewCustomerSelection 不包含在 SQL 中,并且返回所有客户。
  • 包括来自 ViewCustomerSelection 的字段:返回正确的选择,但现在 Customer 对象不可更新
  • 在 SomeOption 字段上指定“非空”条件:错误 - 必须映射具有 'IsNull=false' 条件的属性 ViewCustomerSelection.SomeOption。
  • 在 ViewCustomerSelection.ID 字段上指定“非空”条件:错误 - “实体类型在其主键上包含一个条件。请从映射中删除该条件。

澄清

数据库定义:

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%'

我想要具有 ID 和名称的实体 Customer,它只有 ViewCustomerSelection 中存在的记录的记录(注意 - 实际上视图更复杂,不能使用简单的条件来表达)

4

0 回答 0