【问题标题】:Foreign Keys or virtual fields外键或虚拟字段
【发布时间】:2014-06-17 20:10:07
【问题描述】:

我有一个 Project 表,其中一些字段指向 Participant 表,但当然都有不同的含义:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace iMaSys.Models
{
    public class Project
    {
        [Key]
        public int ProjectID { get; set; }

        [Required]
        [StringLength(128)]
        [Display(Name = "Omschrijving")]
        public string Description { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        [Display(Name = "Startdatum")]
        public DateTime StartDate { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        [Display(Name = "Einddatum")]
        public DateTime? EndDate { get; set; }

        public Boolean Active { get; set; }

        [Display(Name = "Mediation Casenummer")]
        public string Mediation_casenr { get; set; }



        public  Participant CaseManager { get; set; }
        public  Participant Supervisor { get; set; }
        public  Participant Party_1 { get; set; }
        public  Participant Party_2 { get; set; }
        public  Participant Client { get; set; }
        public  Participant InterventionManager { get; set; }
        public  Participant Mediator { get; set; }

        public virtual ProjectCategorySub ProjectCategorySubject { get; set; }

        }
    }

Casemanager、Supervisor、Party_1 等字段都指向 Participant。在 Particpant 中,我添加了 InverseProperties 来告诉框架项目和参与者之间的联系:

[InverseProperty("Mediator")]
public List<Project> ProjectMediators { get; set; }

[InverseProperty("Supervisor")]
public List<Project> ProjectSupervisors { get; set; }
etc. etc.

添加迁移和更新数据库后,项目中的字段命名如下:

CaseManager_ParticipantID 等。我只需要 CaseManagerID 指向 Participant_ParticipantID。我尝试了几件事,但我似乎不明白如何让它工作。

我被这个卡住了,谁能指出我正确的方向?

最好的问候,Janno Hordijk

【问题讨论】:

  • 或许this?
  • 我更新了我的问题以包含 InverseProperties。有人可以帮我吗?
  • 别忘了接受。

标签: model-view-controller foreign-key-relationship


【解决方案1】:

我自己解决了,但想分享我的发现。

参加者:

    [InverseProperty("Mediator")]
    public virtual ICollection<Project> MediatorProjects { get; set; }
    [InverseProperty("Supervisor")]
    public virtual ICollection<Project> SupervisorProjects { get; set; }

在项目中:

    [ForeignKey("Mediator")]
    public int? Mediator_ID { get; set; }
    public virtual Participant Mediator { get; set; }

    [ForeignKey("Supervisor")]
    public int? Supervisor_ID { get; set; }
    public virtual Participant Supervisor { get; set; }

现在数据库没问题,我的字段名是 Supervisor_ID 而不是 Supervisor_Participant_ID

最好的问候,詹诺

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多