Вы частично правы ... но вы немного смешиваете.
Нельзя сделать поле первичного ключа пустым. Эта часть верна. Но поле внешнего ключа для объекта, содержащего отношение «один -> ноль» или «одно», МОЖЕТ быть нулевым.
В LINQ to SQL отношение один -> ноль или одно будет просто полем, которое ссылается на другой класс LINQ to SQL, но допускает значения NULL.
Примеры таблиц
create table Child (
id int identity(1,1),
name varchar(max),
primary key (id))
create table Parent (
id int identity(1,1),
childId int,
name varchar(max),
primary key (id),
foreign key (childId) references Child(id))
Используя эти таблицы, вы должны получить единицу -> ноль или единицу от Родителя до Ребенка и одну -> много от Ребенка до Родителя (у одного ребенка может быть много родителей).