2014-09-17 1 views
7

У меня есть следующий код для двух классов:Как установить связь 0 .. * в коде Entity Framework Сначала?

public class Object 
{ 
    public int ObjectID { get; set; } 

    public int Object2ID { get; set; } 
    public virtual Object2 Object2 { get; set; } 
} 

public class Object2 
{ 
    public int Object2ID { get; set; } 

    public virtual ICollection<Object> Objects { get; set; } 
} 

Я знаю, что с Entity Framework, это будет создавать отношения один-ко-многим, но то, что я хочу знать, это как превратить это к отношения «нуль-ко-многим».

Я новичок в платформе Entity Framework, и я не мог найти прямой ответ.

+2

Это еще один ко многим отношений, разница только либо иметь требуемую Principal или приобретаемой Принципала на Dependent. –

+2

Я согласен, я не вижу, как вы можете иметь отношение 0 к чему-либо, если есть что-то, то оно не может быть связано ни с чем. –

+2

Просто fyi, нормальная номенклатура, вы не используете '∞', поскольку это особый символ, и некоторым системам может не понравиться Unicode. Обычно вы выражаете это как «0 .. *», и это то, что вы увидите в большинстве случаев refrences документации. –

ответ

5

Для отношений «0-ко-многим» в Entity Framework, если внешний ключ имеет значение NULL.

public int? Object2ID { get; set; } 
+0

Нужно ли установить public virtual Object2 Object2 {get; задавать; } Как тоже нулевое значение, или только ключ? –

+0

№ Как класс, Object2 уже может быть установлен на нуль, если это необходимо. – UtopiaLtd

+1

@ user3552621 Это значение «по-умолчанию». Кстати, вам не нужно иметь Object2ID в классе Object. –

3

Другой способ сделать это с помощью Fluent API:

public class YouDbContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder mb) 
    { 
     mb.Entity<Object2> 
      .HasMany(o1 => o1.Objects) 
      .WithOptional(o2 => o2.Object2); 

     base.OnModelCreating(mb); 
    } 
}