必须自动要求任何外键吗?

时间:2017-02-14 13:12:42

标签: entity-framework-6 asp.net-mvc-5

我有一个名为Tarefa的模型(葡萄牙语任务):

public class Tarefa
{
    [Key]
    public int ID { get; set; }

    [Required]
    public string Assunto { get; set; }

    public int ClienteID { get; set;  }
    public virtual Cliente Cliente { get; set; }

    public int ProcessoID { get; set; }
    public virtual Processo Processo { get; set; }        
}

ClienteID和ProcessoID(不需要)

创建新的Tarefa时,我不需要选择它们。

在Scaffolding,add-migration和update-database之后,表定义显示:

CREATE TABLE [dbo].[Tarefas] (
[ID]                INT            IDENTITY (1, 1) NOT NULL,
[Assunto]           NVARCHAR (MAX) NOT NULL,
[ClienteID]         INT            NOT NULL,
[ProcessoID]        INT            NOT NULL,
CONSTRAINT [PK_dbo.Tarefas] PRIMARY KEY CLUSTERED ([ID] ASC),
CONSTRAINT [FK_dbo.Tarefas_dbo.Clientes_ClienteID] FOREIGN KEY ([ClienteID]) REFERENCES [dbo].[Clientes] ([ID]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.Tarefas_dbo.Processoes_Pasta (se ajuizado)] FOREIGN KEY ([ProcessoID]) REFERENCES [dbo].[Processoes] ([ID]) ON DELETE CASCADE,    

);

为什么这两列不是NULL?

1 个答案:

答案 0 :(得分:1)

默认情况下,外键字段不为空。如果您需要将任何外键专用于null,请在那里使用nullable。 喜欢用,

public int? ClienteID { get; set; }而不是

public int ClienteID { get; set; }

同样适用于public int ProcessoID { get; set; }