Вот проблема с Table Mapping
для базы данных. каждая сущность будет настроена для сопоставления с таблицей с тем же именем, что и у свойства DbSet<TEntity>
, которое предоставляется производному контексту. Если для данной сущности нет DbSet<TEntity>
, используется имя класса.
как вы установили в своем коде Users
и Conversations
не является именем таблицы. для этого вы также можете настроить ссылку https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables
и используйте Data Annotations
для указания имени таблицы.
public messageStatus status { get; set; }
Я думаю, что это свойство не является частью вашего столбца таблицы, поэтому вы должны указать [NotMapped]
Аннотации данных.
после изменений и добавления Data Annotations
к контексту таблицы и к виду таблицы.
public class ChatContext : DbContext
{
public ChatContext()
{
}
public virtual DbSet<tblUser> Users { get; set; }
public virtual DbSet<tblMessage> Conversations { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=test;Trusted_Connection=True;MultipleActiveResultSets=true");
}
}
}
и ваши модели (таблицы) сущности выглядят так.
[Table("tblMessage")]
public class tblMessage
{
public tblMessage()
{
status = messageStatus.Sent;
}
public enum messageStatus
{
Sent,
Delivered
}
public int Id { get; set; }
public int senderId { get; set; }
public int receiverId { get; set; }
public string message { get; set; }
[NotMapped]
public messageStatus status { get; set; }
public System.DateTime created_at { get; set; }
}
[Table("tblUser")]
public class tblUser
{
public int id { get; set; }
public string name { get; set; }
}
теперь вы можете получить доступ к Conversations
и Users
после добавления [Table("<table-name>")]
аннотаций данных.
также вы можете использовать Fluent API
для отображения таблицы.
после использования таблицы отображения таблиц после изображения кода отладки, например.
Я надеюсь, что это поможет вам, и дайте мне знать, если потребуется дополнительная информация. :)