我想在實體框架6中映射兩個表,並且需要一些幫助!這是我的聊天應用程序;我需要將用戶對話映射到數據庫中。羣組和私人消息。然而,對於這個問題,如果你幫助我的私人信息映射,我應該希望由我自己:)自己的工作組。然而,他們共享相同的數據,這是我掙扎了一下的地方:如何將密鑰設置爲完全相同的數據而沒有重複。這是我到目前爲止有: * *編輯 - 新代碼 ** * **實體框架 - 具有相同數據的兩個人
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace CodeFirstNewDatabaseSample
{
static void Main(string[] args)
{
using(var db = new PrivateMessageContext())
{
Console.Write("Enter message: ");
var message = Console.ReadLine();
var userFrom = "userFrom";
var userTo = "userTo";
var messageDetail = new PrivateMessageDetail(MessageDate = DateTime.Now, FromUser = userFrom, message = message);
var pm = new PrivateMessageHeader { User1 = userFrom, User2 = userTo, TimeStamp = DateTime.Now };
pm.Messages.Add(messageDetail);
db.PrivateMessages.Add(pm);
db.SaveChanges();
// Display all Blogs from the database
foreach(var pmsg in db.PrivateMessages)
{
var query = pmsg;
Console.WriteLine(pmsg.Message);
}
Console.ReadKey();
}
}
}
public class PrivateMessage
{
public int PrivateMessageId { get; set; }
public string Message { get; set; }
public DateTime TimeStamp { get; set; }
// public int User1Id { get; set; }
public virtual string user1 { get; set; }
// public virtual User user1 { get; set; }
public virtual string user2 { get; set; }
//public int User1Id { get; set; }
// public virtual User user2 { get; set; }
}
public class User
{
public int UserId { get; set; }
public string UserName { get; set; }
}
public class PrivateMessageContext : DbContext
{
public DbSet<PrivateMessage> PrivateMessages { get; set; }
}
public class Send
{
/* void Send(userTo, userFrom, message)
{
using (var db = new PrivateMessageContext()) {
var query = from pm in db.PrivateMessages;
foreach(var msg in pm)
{
var user1 = msg.user1;
var user2 = msg.user2;
if ((user1==userTo && user2==userFrom) || (user1==userFrom && user2==userTo))
{
msg.Message += message;
return;
}
else {
// pair doesn't exist
var PrivateMessage = new PrivateMessage { user1 = userFrom; user2 = userTo; TimeStamp = DateTime.Now; Message = message; };
db.PrivateMessages.Add(PrivateMessage);
db.SaveChanges();
}
}
}*/
}
}
我現在被困在兩件事情 - 如何創建一個可調用的類,用於檢查是否存在以前的消息歷史(Send())以及如何使用用戶名而不是字符串...
謝謝
* 更新3 *
static void Main(string[] args)
{
using(var db = new PrivateMessageContext())
{
Console.Write("Enter message: ");
var message = Console.ReadLine();
var userFrom = "userFrom";
var userTo = "userTo";
var messageDetail = new PrivateMessageDetail(MessageDate = DateTime.Now, FromUser = userFrom, message = message);
var pm = new PrivateMessageHeader { User1 = userFrom, User2 = userTo, TimeStamp = DateTime.Now, Message = messageDetail };
db.PrivateMessages.Add(pm);
db.SaveChanges();
// Display all Blogs from the database
foreach(var pmsg in db.PrivateMessages)
{
var query = pmsg;
Console.WriteLine(pmsg.Message);
}
Console.ReadKey();
}
}
}
public class PrivateMessageContext : DbContext
{
public DbSet<PrivateMessageHeader> PrivateMessages { get; set; }
}
我不知道我理解你的問題是什麼。 「他們共享相同的數據」是什麼意思?不應該有重複,因爲兩個用戶不能發送相同的消息 –
嗨,Erik,我的意思是我希望這些消息都保存在同一個私人消息中。因此,用戶發送的每條消息都會附加到先前發送的消息中,因此會保存整個消息歷史記錄。 通過共享相同的數據基本上我的意思是,如果user1發送給用戶2,他們都從同一個地方得到消息歷史記錄,並且他們沒有相同消息歷史的兩個存儲。無論如何,我編輯我的問題,因爲我已經取得了一些進展:) – user2330270