ASP.NET MVC 5 - LINQ-Abfrage zur Auswahl der Daten aus der Datenbank
Arbeite ich an einem Projekt in der Schule ASP.NET MVC 5. Das Projekt wird über die Erstellung eines sozialen Netzwerks. Nachdem der Benutzer anmeldet, sieht er alle öffentlichen Beiträge in seinem newsfeed.
Ich habe Probleme, allerdings zeigt die öffentlichen posts' Daten aus der Datenbank.
Dies ist das Skript der Datenbank :
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)
)
Lassen Sie mich erklären, warum ich die Datenbank erstellen so wie ich:
Der Benutzer erstellt und veröffentlicht einige Beiträge, die haben eine Privatsphäre Wert (1 oder 2). Nachdem der Benutzer anmeldet, werden alle öffentlichen Beiträge(1) sollte auf seinen newsfeed.
Bisher habe ich diese LINQ-Abfrage in C#:
var id_posts = from p in db.Posts
select p.texto;
ViewBag.Posts = id_posts;
Kann mir jemand helfen?
Vielen Dank im Voraus 🙂
InformationsquelleAutor André Morais | 2015-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur diese
Sagen, wie es geht
InformationsquelleAutor
Warum nicht einfach ein Feld hinzufügen, in
Post
genanntisprivate
mit boolean-Typ vonBIT
legt fest, ob es privat ist oder nicht und dann mit der Abfrage für die zur Verfügung gestellten Daten mitwhere
Klausel:Wenn du mehr als 2 Arten von Privatsphäre und nur stick mit DB-schema, das Sie zur Verfügung gestellt, können Sie gehen mit einem
JOIN
:Wenn die id entscheidet, ist es privat:
, Wenn der name entscheidet, ist es privat:
Bitte beachten Sie auch, dass die Benennung von Tabellen in einer Sprache und Spalten in einer anderen als schlechtes design. Es ist schwer für andere (in diesem Beispiel mich), um es zu Lesen, auch wenn ich weiß, was es bedeuten soll.
Zwei letzten Anfragen verwenden Sie Ihr schema ohne Veränderungen umgesetzt.
aber ich muss eine Tabelle nur für die Privatsphäre, professor Bestellungen -.- Aber vielen Dank trotzdem 🙂
Habe ich geändert, eine Abfrage, so dass es nicht dein DB-schema direkt. Was ist jetzt ein problem? Wenn es Ihr problem löst, markieren Sie Sie als beantwortet. Wenn nicht, lassen Sie mich wissen, welche Anforderungen erfüllen Sie nicht.
ahh ok, danke 🙂
Wenn Ihre Frage beantwortet ist, markiere es als beantwortet. Danke. 🙂
InformationsquelleAutor mwilczynski