C# 不使用C将数据插入SQL Server数据库#

C# 不使用C将数据插入SQL Server数据库#,c#,asp.net,sql-server,database,visual-studio-code,C#,Asp.net,Sql Server,Database,Visual Studio Code,我正在使用C#,ASP.NET和使用SQL Server数据库的VS代码编写一个web API聊天应用程序。连接正常,我在.cs文件中编写了数据库,并添加了EF Migration。也许我对SqlCommand有问题 代码如下: public async Task SendMessage(string user, string message) { string connn; connn = "Server=DESKTOP-U7SBTFN;Database=BCchat;Uid=

我正在使用C#,ASP.NET和使用SQL Server数据库的VS代码编写一个web API聊天应用程序。连接正常,我在
.cs
文件中编写了数据库,并添加了
EF Migration
。也许我对
SqlCommand
有问题

代码如下:

public async Task SendMessage(string user, string message)
{
    string connn;
    connn = "Server=DESKTOP-U7SBTFN;Database=BCchat;Uid=sa;Pwd=123456789;";

    System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(connn);

    try 
    { 
        Console.WriteLine("Connecting to MySql...");
        con.Open();
        Console.WriteLine("Connection Open!");

        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("insert into Messages(Username, Message) values ('"+user+"','"+message+"')", con);
    }
    catch (Exception exc)
    {
        Console.WriteLine(exc.ToString());
    }

    con.Close();
    Console.WriteLine("Done!");
    Console.WriteLine($"user={user}, message={message}");

    await Clients.All.SendAsync("ReceiveMessage", user, message);
}
下面是Messages.cs和DBContext.cs的代码:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace probagetrequest.Models
{
    [Table("Messages")]
    public class Messages
    {
        [Key]
        public int Id { get; set; }
        public string Username { get; set; }
        public string Message { get; set; }
    }
}

使用系统;
使用Microsoft.EntityFrameworkCore;
命名空间probagetrequest.Models
{
公共类DatabaseContext:DbContext
{
公共数据库上下文(DbContextOptions):基本(选项)
{
}
公共DbSet消息{get;set;}
公共数据库集帐户{get;set;}
}
}

根据我的判断,您没有执行命令。我不确定EF部分正在做什么会忽略这一点

string query = "INSERT INTO Messages (Username, Message) VALUES (@username, @message)";
var cmd = new SqlCommand(query, con);

cmd.Parameters.Add("@username", user);
cmd.Paramaters.Add("@message", message);

//Execute
cmd.ExecuteNonQuery();

正如已经提到的@Jsjr87;您可以使用EFSQL命令。在实体框架中,您通常不编写任何sql命令

首先,将连接字符串保存到Json文件中的SQL Server(
appsettings.Json

DbContext
中设置连接字符串

public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
{
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}

看看你的问题中是否有EF实施。 您可以使用EF插入数据

using (var db = new YourDBContext())
{
 //add to EF Model
 //save change
}

你到底想达到什么目的?因为您同时使用SQL命令和实体框架。“我不太确定您想要什么工作。@请查看关于如何询问StackOverflow问题的指南。@szaszagado应该检查一下;-)对不起,我正在学习编程,对数据库有点困惑。我想将用户和消息存储在数据库中。在我在MongoDB中开发它之前,它很有效,但现在我需要改为MSSQL。
appsettings.json
建议使用ASP.NET核心-但OP没有以任何方式、形状或形式提到“核心”。。。
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
{
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
using (var db = new DatabaseContext())
{
    var message = new Messages { Username  = user, Message = name };
    db.Messages.Add(message);
    db.SaveChanges();
}
using (var db = new YourDBContext())
{
 //add to EF Model
 //save change
}