如何使用 LINQ 将空值发送到 ASP.NET 中的非空列
Posted
技术标签:
【中文标题】如何使用 LINQ 将空值发送到 ASP.NET 中的非空列【英文标题】:How to send a null value to a not null column in ASP.NET with LINQ 【发布时间】:2021-11-11 12:09:32 【问题描述】:我的问题是这样的:
我在 SQL Server 中有一个表,它有一个 NOT NULL 列,它使用 SEQUENCE 作为默认值(NEXT VALUE FOR SeqDefa), 该列不是表中的 PK。
我在 ASP.NET 中构建了一个在该表中执行 CRUD 的 Web 表单,当我想在该列中发送一个 null
值以使用该表中的默认值时,我得到一个错误。那是因为 LINQ 说您不能将空值发送到非空列
我该如何解决?
我可以从我的表单中的 LINQ 获取序列的下一个值吗? 除了将表列从非空更改为允许空之外,还有其他选择吗?
【问题讨论】:
你在使用实体框架吗? Linq 不是数据库技术。你使用的是 Linq-to-sql 还是其他的? 不确定您是否可以使用 LINQ 但使用 Pl/SQL 它是select SequenceName.NEXTVAL from DUAL
【参考方案1】:
如果您使用的是 EF 内核,您还可以查看 Value converters。
编写一个简单的函数,当给定值为 null
时设置选定的默认值,或者如果您愿意,可以设置一些计算值。
多亏了这一点,您将不再需要在您的 linq 代码中具有一些特殊行为 - 通常在需要时使用 null
,然后值转换器将处理其余部分。
【讨论】:
【参考方案2】:如果您使用的是实体框架,那么您可能会在 fluent API 中寻找[DatabaseGenerated]
属性或.ValueGeneratedOnAdd()
。
Microsoft Documentation
【讨论】:
以上是关于如何使用 LINQ 将空值发送到 ASP.NET 中的非空列的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON 从视图发送到控制器 ASP.NET MVC 会给出空值