【发布时间】:2015-06-07 22:00:25
【问题描述】:
我正在使用带有代码优先方法的 EF 6。除了数据库级别的数据库约束检查之外,我还想在 POCO 级别提供唯一的约束检查。我关注了文章Setting unique Constraint with fluent API?,有人建议使用 [Index()] 属性。 我在我的 poco 类中应用了相同的方法,但看起来它仍在从数据库级别抛出异常。
这是我的代码:
[Key]
public decimal OrderId { get; set; }
[Index("ORDER_CC", 2, IsUnique = true)]
public decimal? MemberId { get; set; }
[Index("ORDER_CC", 3, IsUnique = true)]
public decimal? ItemId { get; set; }
[Index("ORDER_CC", 1, IsUnique = true)]
public decimal? OrderNumber { get; set; }
public decimal? Cost { get; set; }
public DateTime Time { get; set; }
我不确定我在这里做错了什么?
我也想问:
- 我是否需要保留与我在 Order 数据库表中的索引名称相同的索引名称?
- 我怎么知道,它正在根据 EF 约束检查或数据库约束检查进行验证?
- 与在数据库中的 Order 表中定义的顺序相比,我在 POCO 类上保持了相同的索引顺序。
这是我的数据库脚本:
CREATE UNIQUE INDEX xyz.ORDER_CC ON xyz.Order
(OrderNumber, MemberId, ItemId)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 128K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
有什么想法吗?
【问题讨论】:
标签: database entity-framework validation entity-framework-6