2017-02-14 12 views
0

У меня была модель под названием Tarefa (Task на португальском языке):Любые внешние ключи должны быть обязательно необходимы?

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.

После строительных лесов, добавить миграции и обновление базы данных-определение таблицы показывают:

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,  

);

Почему эти 2 столбца не являются NULL?

+0

Поскольку вы использовали 'int'. Если вы хотите, чтобы они были обнуляемыми, используйте тип с нулевым значением 'int?' –

ответ

1

По умолчанию поле внешних ключей не равно нулю. Если вам нужно, чтобы какой-либо внешний ключ был нулевым, используйте значение NULL там. Как использование,

public int? ClienteID { get; set; } вместо

public int ClienteID { get; set; }

аналогично для public int ProcessoID { get; set; }