仅在发生条件时插入

时间:2017-11-13 21:32:45

标签: c# entity-framework

我有下一张桌子:

Votation

validators.py

VotationOptions

Id: PK
Title: string
Expiration: DateTime

用户可以插入VotationOption,同时Votation.Expiration尚未过期。

我无法检查到期日期并在插入选项后,因为在生产中可能是到期日期尚未到期,并且当选项真正插入数据库时​​,到期日期已过期。

我的代码:

Id: PK
Option: string
VotationId: FK

我想要这个:

if (this.context.Votations.First(vot => vot.Id == 1 && vot.Expiration < DateTime.Now == null) return BadRequest();

var option = new VotationOption
{
    Option = "Example",
    VotationId = 1
};

this.context.VotationOptions.Add(option);
this.context.SaveChanges();

1 个答案:

答案 0 :(得分:0)

仅使用实体框架就无法完成。但是,您仍然可以使用基础数据库上下文来执行原始SQL,以便您可以使用以下内容:

int result = this.context.Database.ExecuteSqlCommand("INSERT INTO VotationOptions (VotationId, Option) SELECT {your literal values} FROM Votation WHERE {check validity on the votation}");

其中result表示数据库最终插入的行数。请记住,您必须编写有效性检查,以便只返回1个结果。

然而,就像@ElementalPete在他对你的问题的评论中提到的那样,我会质疑必要性。