簡體   English   中英

兩個主鍵類

[英]Two primary keys class

我開始做一個新項目,並嘗試將我之前創建的數據庫改編成Entity Framework上的數據庫,我有2個表:Challenge和Coment,而我想做的就是將Coment與Challenge關聯起來。 我在使用實體框架之前做了什么:

 public class Challenge
{
    public int ChallengeId { get; set; } // id associado ao desafio
    public string TypeWork { get; set; } // tipo de trabalho que o cliente pretende que seja feito
    public string Description { get; set; } // Descricao detalhada do desafio
    public decimal Value { get; set; } // Valor em pontos ou em dinheiro pago ao vencedor do desafio
    public DateTime DateCriation { get; set; } // data da criação do anuncio
    public DateTime DataEnd { get; set; } // data em que expira o desafio
    public int? WinnerSolution { get; set; } // id da solucao vencedora
    public int PaymentTypeId { get; set; } // chave estrangeira para tipo de pagamento
    public int ComentChallengeId { get; set; } // chave estrangeira para Comentario do desafio
    public virtual ICollection<TypePayment> TypePayment { get; set; } // coleccao de tipos de pagamento 

    public virtual ICollection<ComentChallenge> ComentChallenge { get; set; } // lista de comentarios associados ao desafio

}

挑戰挑戰課

namespace CrowdTouring.Models
{
    public class ComentChallenge
    {
        [Key]
        [Column(Order = 1)]
        public int ComentChallengeId { get; set; } // id do comentario do desafio
        [Key]
        [Column(Order = 2)]
        public int ChallengeId { get; set; } // id do desafio
        public string Title { get; set; } // titulo do comentario
        public string Description { get; set; } // Descricao do comentario
        public DateTime date { get; set; } // data do comentario

    }
}

在comentChallenge類中,我創建了2個主鍵1與挑戰相關聯,另一個與與挑戰相關的評論相關聯。

我建議在DbContext中使用MobelBuilder來解決它。 讓它知道兩者是相關的。 我在下面修改了您的代碼,並添加了一個上下文示例。

通過使用約定,將在數據庫中自動為您生成外鍵ID,並且您可以在代碼中使用導航屬性來訪問關系。

 public class ApplicationDbContext : DbContext
    {
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.Entity<Challenge>().HasMany(x => x.CommentChallenges).WithOne(y => y.Challenge);
        }
    }

public class Challenge
{
    public int Id { get; set; } // id associado ao desafio
    public string TypeWork { get; set; } // tipo de trabalho que o cliente pretende que seja feito
    public string Description { get; set; } // Descricao detalhada do desafio
    public decimal Value { get; set; } // Valor em pontos ou em dinheiro pago ao vencedor do desafio
    public DateTime DateCriation { get; set; } // data da criação do anuncio
    public DateTime DataEnd { get; set; } // data em que expira o desafio
    public int? WinnerSolution { get; set; } // id da solucao vencedora
    public int PaymentTypeId { get; set; } // chave estrangeira para tipo de pagamento
    public virtual ICollection<TypePayment> TypePayment { get; set; } // coleccao de tipos de pagamento 

    public virtual ICollection<ComentChallenge> CommentChallenges { get; set; } // lista de comentarios associados ao desafio

}

namespace CrowdTouring.Models
{
    public class ComentChallenge
    {
        public int Id { get; set; } // id do comentario do desafio
        public string Title { get; set; } // titulo do comentario
        public string Description { get; set; } // Descricao do comentario
        public DateTime date { get; set; } // data do comentario
        public virtual Challenge Challenge { get; set;}
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM