C# ASP.NET MVC 5-从数据库中选择数据的LINQ查询
我正在用ASP.NETMVC5做一个学校项目。该项目是关于创建一个社交网络。用户登录后,将在其新闻提要上看到所有公共帖子。 不过,在从数据库中显示公共帖子的数据时,我遇到了一些问题 这是数据库的脚本:C# ASP.NET MVC 5-从数据库中选择数据的LINQ查询,c#,sql,asp.net-mvc,database,linq,C#,Sql,Asp.net Mvc,Database,Linq,我正在用ASP.NETMVC5做一个学校项目。该项目是关于创建一个社交网络。用户登录后,将在其新闻提要上看到所有公共帖子。 不过,在从数据库中显示公共帖子的数据时,我遇到了一些问题 这是数据库的脚本: create table Utilizador( id_utilizador integer not null identity(1,1), nome varchar(50) not null, apelido
create table Utilizador(
id_utilizador integer not null identity(1,1),
nome varchar(50) not null,
apelido varchar(50) not null,
username varchar(15) not null unique,
pass varchar(50) not null,
email varchar(50) not null unique,
sexo char(1) not null CHECK (sexo IN('M', 'F')),
país varchar(50) not null,
imagem_perfil varchar(50) not null,
data_nascimento date not null,
estado int not null default 2, --0->Bloqueado 1-Activo, 2-por activar
primary key (id_utilizador),
check (email LIKE '%@%.%')
)
create table Post(
id_post integer not null identity(1,1),
texto varchar(400) not null,
primary key(id_post)
)
create table Publish_Post(
id_post integer not null,
id_utilizador integer not null,
data timestamp not null,
primary key(id_post),
foreign key(id_post) references Post(id_post),
foreign key(id_utilizador) references Utilizador(id_utilizador)
)
create table Privacy(
id_privacidade integer not null identity(1,1), --> 1 public, 2 private
nome varchar(50) not null,
primary key(id_privacidade)
)
create table Have_Privacy(
id_post integer not null,
id_privacidade integer not null,
primary key(id_post),
foreign key(id_post) references Post(id_post),
foreign key(id_privacidade) references Privacidade(id_privacidade)
)
让我解释一下为什么我会这样创建数据库:
用户创建并发布一些隐私值为1或2的帖子。用户登录后,所有公共帖子1都应显示在其新闻提要上。
到目前为止,我有一个C语言的LINQ查询:
var id_posts = from p in db.Posts
select p.texto;
ViewBag.Posts = id_posts;
有人能帮我吗?
提前感谢:为什么不在Post中添加一个名为isprivate的字段,该字段的位为布尔类型,用于确定它是否为私有,然后使用where子句查询提供的数据: 如果您想拥有两种以上的隐私,只需坚持您提供的DB模式,您可以选择加入: 如果id决定它是私有的: 如果名称决定它是私有的: 另外请注意,用一种语言命名表和用另一种语言命名列被认为是糟糕的设计。这个例子中的其他人很难让我阅读它,即使我知道它应该是什么意思。 最后两个查询使用您的模式,但未执行任何更改。只需执行此操作即可
var id_posts = from p in db.Posts
join hp in db.Have_Privacy on p.id_post equals hp.id_post
join prv in db.Privacy on hp.id_privacidade equals prv.id_privacidade
where prv.nome = 'Private'
select p.texto;
告诉我进展如何谢谢你的建议,但是这篇文章可以有很多类型的隐私:/但是我需要一个表来保护隐私,orders教授--但是非常感谢你:我已经更改了一个查询,所以它直接使用了你的DB模式。现在有什么问题?如果它解决了您的问题,请将其标记为已回答。如果没有,请告诉我它不符合哪些要求。如果它回答了您的问题,请将其标记为已回答。谢谢
var id_posts = from p in db.Posts
join hp in db.Have_Privacy on p.id_post equals hp.id_post
where hp.id_privacidade = 1
select p.texto;
var id_posts = from p in db.Posts
join hp in db.Have_Privacy on p.id_post equals hp.id_post
join prv in db.Privacy on hp.id_privacidade equals prv.id_privacidade
where prv.nome = 'Private'
select p.texto;
var id_posts = from p in db.Posts
join hp in db.Have_Privacy on p.id_post equals hp.id_post
join prv in db.Privacy on hp.id_privacidade equals prv.id_privacidade
where prv.nome = 'Private'
select p.texto;