我的表是这样设计的
CREATE TABLE TB_Article
(
ID int NOT NULL PRIMARY KEY IDENTITY(1,1),
Title varchar(256) NOT NULL,
IsPublic bit NOT NULL DEFAULT 1,
)
go
CREATE TABLE TB_Column
(
ID int NOT NULL PRIMARY KEY IDENTITY(1,1),
ParentID int FOREIGN KEY REFERENCES TB_Column(ID),
IsAvailable bit NOT NULL DEFAULT 1
)
go
CREATE TABLE TB_ArtAndCol
(
ArticleID int NOT NULL FOREIGN KEY REFERENCES TB_Article(ID),
ColunmID int NOT NULL FOREIGN KEY REFERENCES TB_Column(ID),
PRIMARY KEY(ArticleID,ColunmID)
)
在EF4自动生成的实体是这样的
比如现在文章1是属于栏目1和栏目2的,现在我想把文章1从栏目1移除,以前是直接在表TB_ArtAndCol删除对应的列就行,在EF4中要怎么删除?
ps:顺便问下哪里有比较全的EF4教程?
你这个是简单的多对对,操作很简单:
对Tb_Column进行删除操作:
Tb_Column.Tb_Articles.Remove(Tb_Article)
参考非简单多对多关联删除:
谢谢。
能再帮忙回答个问题吗?
那个文章表和栏目表是关联在一起的,栏目表有一个IsAvailable属性,现在我想查出 IsAvailable为真的栏目的文章,应该怎么查?通过join吗?
那个栏目表是自关联的,由于ParentID可为空,所以在model中无法映射,我现在想查出没有父栏目的栏目应该怎么查?
var list = DB.TB_Column.Where(n => n.Parent == null).ToList();
我通过上面的语句可以查询出来,可是查询后的栏目的子栏目数量都为0。
@Ten_cnblogs:
问题一:DB.Tb_Articles.Where(x=>x.Tb_Columns.Where(y=>y.IsAvailable).Any())
问题二:DB.TB_Column.Where(n => n.Parent == null).ToList(),这个应该是正确的。
@519740105: 第二个问题,我查询出来后结果是第一张图,子栏目为0,本来应该有子栏目的,这是为什么?
@Ten_cnblogs: 我觉得你应该看你的查询(query)是否有其它条件。
实在不行,你可以把query转换为sql语句(tostring),把sql语句复制到数据库中执行,看是否有结果。
博客园有ef的专题呃