[英]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.