代码之家  ›  专栏  ›  技术社区  ›  Fredou

当在表中有一个不能为空的外键时,如何处理这种情况?

  •  0
  • Fredou  · 技术社区  · 15 年前

    我有一个案例,我有一个Linq2SQL DBML,其中有两个表

    通过以下方式简化:

    Table1
    id int not null
    fkid int not null (to table2.id)
    

    Table2
    id int not null
    v1 bit not null
    

    在生成的DBML中,fkid不是可以为空的类型,默认情况下它的值为0。

    但是在表2中,我没有ID 0

    当我试图在不接触FKID字段的情况下插入新记录时,我收到一个SQL插入错误,它说:0不存在于表2中

    我要做的是使我的检查完全通用,这样我就不能做如下的事情:

    如果列不允许空,则检查值是否为0,如果为0,则引发自定义错误。

    我想做如下的事情:如果列为空,则抛出“我的自定义错误”

    您将如何实现这一点?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Fredou    15 年前

    因为我使用的是t4模板,所以我将l2st4.ttinclude中的第80行更改为

    if (type.IsValueType && canBeNull)
    

    if (type.IsValueType)
    

    所以它总是在生成的文件中的任何地方设置可以为空的类型