Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
49 个问题
我有一个用 .Net Framework 编写的数据导入应用程序,用于迁移到 .Net Core。应用程序使用 c# 类将数据表作为输入参数传递给 MSSQL 服务器存储过程。EF6 中的代码工作正常,粘贴在下面。
public void InsertExcelPrescriptions(int excelMasterId, DataTable dt)
{
var p1 = new SqlParameter { ParameterName = "IN_intExcelMasterId", Value = excelMasterId };
var p2 = new SqlParameter { ParameterName = "IN_tabRecords"
, Value = dt, SqlDbType = SqlDbType.Structured, TypeName = "dbo.HDS2_PrescriptionType" };
string sql = string.Format("dbo.HDS2_spInsertPrescriptionsFromExcel @{0}, @{1}", p1.ParameterName, p2.ParameterName);
var db = new Db();
db.Database.ExecuteSqlCommand(sql, p1, p2);
return;
}
其中 Db 继承自 DbContext。
我试图在 Entity Framework Core 中模拟这种行为,但没有成功。我尝试使用 FromSqlInterpolated,但代码不明白输入参数是数据表而不是字符串或数字等。
我还尝试运行原始 SQL 命令
using (var command = new Db().Database.GetDbConnection().CreateCommand())
{
....
}
尽管这没有错误,但 MSSQL Server 数据库表中未插入任何内容。
我只想通过将数据表作为用户定义的表类型传递给存储过程,将一些行插入到数据库表中。
Note:此问题总结整理于 : How to pass datatable from c# class to MSSQL Server stored procedure using Entity Framework Core 5.0.1.