C# 具有零值的实体框架外键

C# 具有零值的实体框架外键,c#,sql-server,entity-framework,fluent,C#,Sql Server,Entity Framework,Fluent,我有以下问题,我必须用一个非常丑陋且不规范的设计连接一个现有的数据库。 所以我有很多外键不是Null而是一个值为0(零)的外键,所以它是一个Null引用 但在一些表中,我也有可为空的FKs,但也有零值 我可以用一些约定或其他东西自定义实体框架吗。所以EF知道,如果列不为Null,我说引用在Fluent中是可选的,那么在notnull列中写一个零 唯一的另一种解决方案是写视图进行读访问,SP进行写访问,以便在数据库上进行有效的抽象。但是有超过500张桌子,这是一项艰巨的工作 所以有人想出了更好的解

我有以下问题,我必须用一个非常丑陋且不规范的设计连接一个现有的数据库。 所以我有很多外键不是Null而是一个值为0(零)的外键,所以它是一个Null引用

但在一些表中,我也有可为空的FKs,但也有零值

我可以用一些约定或其他东西自定义实体框架吗。所以EF知道,如果列不为Null,我说引用在Fluent中是可选的,那么在notnull列中写一个零

唯一的另一种解决方案是写视图进行读访问,SP进行写访问,以便在数据库上进行有效的抽象。但是有超过500张桌子,这是一项艰巨的工作

所以有人想出了更好的解决办法

另外要注意的是,数据库正在进行重构,因此在一到两年内它就被规范化了,并且没有那么难看的设计

数据库系统ist MsSql

对不起,我的英语不好

所以EF知道,如果列不为Null,我说引用是可选的 在Fluent中,它在Not Null列中写入一个零

插入时我会这样写

myTable.destFK_Field = sourceFK_Field ?? 0
SQL等价物:

myTable.destFK_Field = COALESCE(sourceFK_Field,0)
假设您是从EDMX生成模型,我认为没有太多选项可以添加到模型中