如何在表中获得一个不能为空的外键?

时间:2009-08-11 18:50:36

标签: linq-to-sql

我有一个案例,我有一个带有2个表的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不是可以为null的类型,默认情况下它的值为0

但是在table2中,我没有id 0

当我试图在不触及fkid字段的情况下插入新记录时,我收到一条SQL插入错误:0表示不存在于table2中

我想做的事情是让我的支票完全通用,所以我不能只做以下的事情:

如果列不允许空值,则检查值是否为0,如果是这种情况则抛出自定义错误

我想做类似的事情:如果column为null,则抛出“我的自定义错误”

你将如何实现?

1 个答案:

答案 0 :(得分:1)

因为我正在使用t4模板,所以我在

中更改了L2ST4.ttinclude中的第80行
if (type.IsValueType && canBeNull)

if (type.IsValueType)

所以它总是在生成的文件

中的任何地方设置可空类型