0

Как новичок в Entity Framework и его подходы, у меня есть пара классов моделей, которые я хочу использовать для создания таблиц базы данных с первым подходом кода. Идентификатор модели User относится к 2 таблицам и точкам по крайней мере по 2 столбца для каждой из этих таблиц, как показано ниже.Entitiy Framework: определение отношений с первым подходом кода

public class ControlGroup 
    { 

     public int ControlGroupId { get; set; } 

     public string ControlGroupName { get; set; } 

     public virtual User CreatedBy { get; set; } 

     public DateTime CreationTime { get; set; } 

     public virtual User UpdatedBy { get; set; } 

     public DateTime UpdateTime { get; set; } 

    } 

    public class ControlPoint 
    { 

     public int ControlPointId { get; set; } 

     public string ControlPointName { get; set; } 

     public virtual User CreatedBy { get; set; } 

     public DateTime CreationTime { get; set; } 

     public virtual User UpdatedBy { get; set; } 

     public virtual User Auditor{ get; set; } 

     public DateTime UpdateTime { get; set; } 

    } 

    public class User 
    { 

     public string UserId { get; set; } 

     public string UserFirstName { get; set; } 

     public string UserLastName { get; set; } 

     public string UserPassword { get; set; } 

     public string UserEmail { get; set; } 

     public virtual UserType UserType { get; set; } 

    } 

Я уже определил User в ControlGroup и и ControlPoint классах, но я путать о том, как определить отношения в User классе. Нужно ли добавлять 5 аттрибутов в User для каждого из объектов User в двух других классах или достаточно одного? Любая помощь будет оценена по достоинству.

ответ

0
  1. Добавить все ваши классы ID поля
  2. Добавить навигационные свойства класса User
  3. Я предполагаю, что у вас есть один-ко-многим между Пользователем и ControlPoint, ControlGroup лиц.
  4. Я удалил поле UserType от пользователя, потому что вы не показывали декларацию класса UserType и не задавали отношения между ними (я не знаю, что с ним делать, решите его самостоятельно).

На моделях будет выглядеть следующим образом:

public class ControlGroup 
{ 
    //was added 
    public int ID { get; set; } 

    public int ControlGroupId { get; set; }  
    public string ControlGroupName { get; set; }  
    public virtual User CreatedBy { get; set; }  
    public DateTime CreationTime { get; set; }  
    public virtual User UpdatedBy { get; set; }  
    public DateTime UpdateTime { get; set; }  
} 

public class ControlPoint 
{ 
    //was added 
    public int ID { get; set; } 

    public int ControlPointId { get; set; }  
    public string ControlPointName { get; set; }  
    public virtual User CreatedBy { get; set; }  
    public DateTime CreationTime { get; set; }  
    public virtual User UpdatedBy { get; set; }  
    public virtual User Auditor { get; set; }  
    public DateTime UpdateTime { get; set; }  
} 

public class User 
{ 
    //was added 
    public int ID { get; set; } 

    public string UserId { get; set; }  
    public string UserFirstName { get; set; }  
    public string UserLastName { get; set; }  
    public string UserPassword { get; set; }  
    public string UserEmail { get; set; } 

    //on your own 
    //public virtual UserType UserType { get; set; } 

    //navigation properties one-to-many were added 
    [InverseProperty("Auditor")] 
    public virtual ICollection<ControlPoint> ControlPointAuditor { get; set; } 
    [InverseProperty("UpdatedBy")] 
    public virtual ICollection<ControlPoint> ControlPointUpdatedBy { get; set; } 
    [InverseProperty("CreatedBy")] 
    public virtual ICollection<ControlPoint> ControlPointCreatedBy { get; set; }  
    [InverseProperty("UpdatedBy")] 
    public virtual ICollection<ControlGroup> ControlGroupUpdatedBy { get; set; } 
    [InverseProperty("CreatedBy")] 
    public virtual ICollection<ControlGroup> ControlGroupCreatedBy { get; set; } 
    //navigation one-to-many 
} 
Смежные вопросы