2015-09-10 4 views
0

Я довольно новичок в разработке базы данных с помощью EF и пытается понять, как правильно перевести мои модели Entity в таблицы DB.Отношения «один-много» для нескольких таблиц

У меня есть следующие два класса:

public class Test 
{ 
    public int ID { get; set; } 
    // ... more data 
    ICollection<Exception> Exceptions { get;set; } 
} 

public class Measurement 
{ 
    public int ID { get; set; } 
    // ... more data 
    ICollection<Exception> Exceptions { get;set; } 
} 

Так мой и классы испытаний и измерений будет содержать список Exception объектов

Мой план состоял в том, чтобы осуществить исключение следующим образом:

public class Exception 
{ 
    public int ID { get; set; } 
    // ... more data 

    /// <summary> 
    /// Reference to Test to create One-To-Many relationship 
    /// </summary> 
    public Test Test{ get; set; } 

    /// <summary> 
    /// Foreign key of Test table 
    /// </summary> 
    public int TestID { get; set; } 

    /// <summary> 
    /// Reference to Measurement to create One-To-Many relationship 
    /// </summary> 
    public Measurement Measurement { get; set; } 

    /// <summary> 
    /// Foreign key of Measurement table 
    /// </summary> 
    public int MeasurementID { get; set; } 
} 

Таким образом, каждый мой объект Exception будет иметь внешние ключи для таблиц тестирования и измерения, однако в каждом объекте Exception Тест или Измерение будут представлены, поскольку одно исключение не может быть как из теста, так и из измерения.

Это работает, но мне было интересно, если это правильный путь или есть лучшая практика.

Благодаря

+0

Вы спрашиваете, для проверки кода? – Biscuits

+0

Не совсем обзор кода, но скорее стратегия. – inside

+0

Возможно, вы захотите сделать тестовые и измерительные свойства виртуальными. –

ответ

0

Virtual для EF идентификации соединения

с «виртуальным ICollection» для многих и только с «виртуальным объектом» для одного

испытаний имеет много измерений и измерение имеет Испытание

public class Test 
{ 
    public int Id { get; set; } 
    public string Testname { get; set; } 
    public virtual ICollection<Measurement> Measurements { get; set; } 
} 
public class Measurement 
{ 
    public int Id { get; set; } 
    public int FullMeasurement { get; set; } 
    public virtual Test Test { get; set; } 
} 

и у вас есть DataAnotation [ForeignKey ("TestRefId")] для Exemple:

[ForeignKey("TestRefId")] 
public virtual Test Test { get; set; } 

таблица переходит в TestRefId для идентификации испытания

Извините за мой английский

Смежные вопросы