实体框架代码首先使用表函数创建复杂约束

问题描述

我需要为对象创建一个表

public class CustomClassifierValue : EntityClassifier
{
        public int Id { get; set; }
        public string Code { get; set; }
        public DateTime ValidFrom { get; set; }
        public DateTime ValidTo { get; set; }
}

我需要Code列仅在ValidToValidFrom日期之间的时间是唯一的。

基本上,只要两个对象在CodeValidFrom日期之间没有相同的日期,就应该能够使它们具有相同的ValidTo,但是如果尝试,则抛出错误添加一个对象,并且已经有一个具有相同Code的对象,并且它们的ValidFromValidTo日期重叠。

在Entity Framework中可以找到类似的方法吗?

在SQL中,它看起来像:

CREATE FUNCTION dbo.codeUniqueForGivenDates 
    (@code [varchar](10),@dateFrom DateTime,@dateTo DateTime)
RETURNS tinyint
AS
BEGIN
    DECLARE @Result tinyint

    IF EXISTS(SELECT * FROM Objects 
              WHERE Code = @code AND ValidTo > @dateFrom AND ValidFrom < @dateTo)
        SET @Result = 0
    ELSE 
        SET @Result = 1

    RETURN @Result
END

CREATE TABLE [dbo].[Objects]
(
    [Id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,[Code] [nvarchar(max)],NOT NULL,[ValidFrom] [DateTime],[ValidTo] [DateTime],CONSTRAINT ckUniqueCode CHECK (dbo.codeUniqueForGivenDates(Code,ValidFrom,ValidTo) = 1)
)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...