0

古いWebサイトをASP.Net4.5およびEF5コードファーストを使用するように変換しようとしていますが、古いサイトから1つのテーブルがあり、親テーブルの同じ列を参照する2つの列があるため、変換方法がわかりません。 。誰かが私がこのテーブルを変換するのを手伝ってもらえますか?

    CREATE TABLE dbo.tblCollectionsList
    (
        ListID smallint IDENTITY(0,1) NOT NULL,
        SectionID smallint NOT NULL,
        IncludedSectionID smallint NOT NULL,
        CONSTRAINT PK_CollectionsList_ListID PRIMARY KEY CLUSTERED (ListID ASC),
        CONSTRAINT FK_CollectionList_SectionInfo FOREIGN KEY (SectionID) REFERENCES dbo.tblSectionInfo (SectionID),
        CONSTRAINT FK_CollectionList_SectionInfo2 FOREIGN KEY (IncludedSectionID) REFERENCES dbo.tblSectionInfo (SectionID)
    )
4

2 に答える 2

0

これは属性を使用することです。属性なしで同じことを実行し、代わりにでFluentApiを使用することもできますOnModelCreating

[Table("tblCollectionsList")]
public class CollectionsList
{
[Key]
public byte ListID {get;set;}
public byte SectionID {get;set;}
public byte IncludedSectionID {get;set;}

[ForeignKey("SectionID")]
public virtual Section Section {get;set;}
[ForeignKey("IncludedSectionID")]
public virtual Section IncludedSection {get;set;}

}
于 2013-03-25T18:29:40.070 に答える
0

テーブル名の個人的な好みを許してください、しかしあなたが直面する問題はカスケード削除にあります、あなたはモデル作成でこの振る舞いをオフにすることができます:

[Table("Section")]
public class Section
{
    [Key]
    public virtual int Id { get; set; }
    public virtual string Description { get; set; }
}

[Table("List")]
public class List
{
    [Key]
    public virtual int Id { get; set; }
    [Required]
    [ForeignKey("Section")]
    public virtual int SectionId { get; set; }
    public virtual Section Section { get; set; }
    [Required]
    [ForeignKey("IncludedSection")]
    public virtual int IncludedSectionId { get; set; }
    public virtual Section IncludedSection { get; set; }
}

public class SectionContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();   
        base.OnModelCreating(modelBuilder);
    }
    public DbSet<Section> Sections { get; set; }
    public DbSet<List> Lists { get; set; }
}
于 2013-03-25T19:52:34.367 に答える