C# 不使用C将数据插入SQL Server数据库#
我正在使用C#,ASP.NET和使用SQL Server数据库的VS代码编写一个web API聊天应用程序。连接正常,我在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=
.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;您可以使用EF和SQL命令。在实体框架中,您通常不编写任何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
}