我最难处理不同类型的外键。在一个表中,它是一个字符串,在另一个表中,它是一个int,我无法更正数据库。
我有两个表,我将称之为MainLine和CommentLine,以一对多的关系。
public partial class MainLineDTO
{
public MainLineDTO()
{
this.CommentLineDTO = new List<CommentLineDTO>();
}
public virtual ICollection<CommentLineDTO> CommentLineDTO { get; set; }
public string Timesheet_No_ { get; set; }
public int Line_No_ { get; set; }
}
public partial class CommentLineDTO
{
public CommentLineDTO()
{
}
public string No_ { get; set; }
public String Code { get; set; }
public string Comment { get; set; }
public virtual MainLineDTO MainLineDTO { get; set; }
}
这些是我的映射文件:
public class MainLineMap : EntityTypeConfiguration<MainLineDTO>
{
public MainLineMap ()
{
// Primary Key
this.HasKey(t => new { t.Timesheet_No_, t.Line_No_});
// Properties
this.Property(t => t.Timesheet_No_)
.IsRequired()
.HasMaxLength(10);
this.Property(t => t.Line_No_).IsRequired();
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.ToTable("Main Table");
this.Property(t => t.Line_No_).HasColumnName("Line No_");
this.Property(t => t.Timesheet_No_).HasColumnName("Timesheet No_");
}
}
public class CommentLineMap : EntityTypeConfiguration<CommentLineDTO>
{
public CommentLineMap()
{
// Primary Key
this.HasKey(t => new {t.No_, t.Code, t.Comment});
// Properties
this.Property(t => t.No_)
.IsRequired()
.HasMaxLength(20);
this.Property(t => t.Code)
.IsRequired();
this.Property(t => t.Comment)
.IsRequired()
.HasMaxLength(80);
this.ToTable("Comment Table");
this.Property(t => t.No_).HasColumnName("No_");
this.Property(t => t.Code).HasColumnName("Code");
this.Property(t => t.Comment).HasColumnName("Comment");
this.HasRequired(t => t.Timesheet_WIP_LineDTO)
.WithMany(t => t.CommentLineDTO)
.HasForeignKey(d => new { d.No_, d.Code });
}
}
所以我要做的是加入行WHERE MainLine.Line_No_ = CommentLine.Code AND MainLine.Timesheet_No_ = CommentLine.No_。 麻烦是Line_No_是一个int,Code是一个String。无论我尝试过什么,代码要么没有编译,要么给了我一个 例外以后。我应该如何修改我的代码以使联接起作用?