![](/img/trans.png)
[英]How to check if data exist in SQL table using EF code first in ASP.NET MVC application?
[英]Converting SQL Table into Entity for ASP.Net EF 5 Code First
我正在尝试转换旧版本的网站以使用ASP.Net 4.5和EF5 Code First,但是旧站点中有一张表,我不知道如何转换,因为它有两列都引用了父表中的同一列。 谁能帮我转换这张桌子?
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)
)
这是使用Attributes的结果,您也可以在没有属性的情况下执行相同的操作,而是在OnModelCreating中使用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;}
}
对表名称有个人偏好,但是您面临的问题是级联删除,您可以在模型创建中关闭此行为:
[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; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.