[英]How to save chats to database context c#
我正在嘗試將聊天記錄保存在數據庫中,但我認為我遺漏了某些部分。
上下文被初始化:
public DbSet<ChatDB>? Chats { get; set; }
這是 class:
[Serializable]
public class ChatDB
{
[Key]
public string? ConnectionId { get; set; }
public string? Username { get; set; }
public List<MessagesDB> MessagesList { get; set; }
}
[Keyless]
[NotMapped]
public class MessagesDB
{
public string? Body { get; set; }
public bool Mine { get; set; }
public string CSS => Mine ? "sent" : "received";
}
在這里,當服務器接收到消息時,我將消息添加到數據庫中:
var FindUser = _context.Chats!.AsEnumerable();
foreach(var chat in FindUser)
{
if(chat.Username == sender)
{
var messageslist = new MessagesDB(message, false);
chat.MessagesList.Add(messageslist); //Here it gives me error - returned null.
_context.Entry(chat).State = EntityState.Modified;
await _context.SaveChangesAsync();
}
}
當我通過用戶名的所有聊天 go 時:
var FindUser = _context.Chats.AsEnumerable();
foreach (var chat in FindUser)
{
if (chat.Username == PassUserNameClicked)
{
foreach(var messages in chat.MessagesList)
{
<div class="@messages.CSS">
<div class="user">@chat.Username</div>
<div class="msg">@messages.Body</div>
</div>
}
}
}
當我構建遷移時,它給了我所有的空:
public partial class AddChatsToDb : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
你們不知道這是怎么回事嗎? 我相信 class 中的“列表”破壞了遷移。
如果有人需要我想通了,這是 class:
[Serializable]
public class ChatDB
{
[Key]
public string? ConnectionId { get; set; }
public string? Username { get; set; }
public MessagesDB? MessagesDBs { get; set; }
}
[Serializable]
public class MessagesDB
{
[Key]
public string? Id { get; set; }
public string? WhoIs { get; set; }
public string? Body { get; set; }
public bool Mine { get; set; }
public DateTime Time { get; set; }
public string? ConnectionId { get; set; }
public string CSS => Mine ? "sent" : "received";
}
只需編譯它,c# 將通過“ConnectionId”連接這兩個類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.