我有下一张桌子:
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();
答案 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在他对你的问题的评论中提到的那样,我会质疑必要性。