首页 新闻 搜索 专区 学院

Entity Framework 4 如何删除关联表?

0
悬赏园豆:30 [已解决问题] 解决于 2014-09-15 17:03

我的表是这样设计的

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教程?

Ten_cnblogs的主页 Ten_cnblogs | 初学一级 | 园豆:21
提问于:2014-09-15 15:58
< >
分享
最佳答案
1

你这个是简单的多对对,操作很简单:

对Tb_Column进行删除操作:

Tb_Column.Tb_Articles.Remove(Tb_Article)

 

参考非简单多对多关联删除:

非简单多对多关系数据的删除问题

收获园豆:30
519740105 | 大侠五级 |园豆:5810 | 2014-09-15 16:56

谢谢。

能再帮忙回答个问题吗?

那个文章表和栏目表是关联在一起的,栏目表有一个IsAvailable属性,现在我想查出 IsAvailable为真的栏目的文章,应该怎么查?通过join吗?

那个栏目表是自关联的,由于ParentID可为空,所以在model中无法映射,我现在想查出没有父栏目的栏目应该怎么查?

var list = DB.TB_Column.Where(n => n.Parent == null).ToList(); 

我通过上面的语句可以查询出来,可是查询后的栏目的子栏目数量都为0。

Ten_cnblogs | 园豆:21 (初学一级) | 2014-09-15 17:16

@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 | 园豆:5810 (大侠五级) | 2014-09-15 17:21

@519740105: 第二个问题,我查询出来后结果是第一张图,子栏目为0,本来应该有子栏目的,这是为什么?

Ten_cnblogs | 园豆:21 (初学一级) | 2014-09-15 17:41

@Ten_cnblogs: 我觉得你应该看你的查询(query)是否有其它条件。

实在不行,你可以把query转换为sql语句(tostring),把sql语句复制到数据库中执行,看是否有结果。

519740105 | 园豆:5810 (大侠五级) | 2014-09-15 18:10
其他回答(2)
0

博客园有ef的专题呃

Cat Qi | 园豆:761 (小虾三级) | 2014-09-15 16:46
0
爱编程的大叔 | 园豆:30743 (高人七级) | 2014-09-15 16:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册