C# 如何解决SQL在代码首次迁移到部署Azure期间找不到数据类型BLOB的问题
我想将当前在ASP.NET Core上使用的sqlite数据库与Azure SQL进行交换。我生成了资源SQL server project上定义的所有内容 当我想将应用程序发布到azure部署服务器和云中的sql数据库时,它说找不到数据类型BLOB。我检查了internet上的解决方案,但没有工作。我想我必须更新我的模型,但我不知道用什么方法 首先,我将useSqlLiteServer更改为UseSqlServer 我还应该在下面列出的模型上更改什么?下面列出的一个模型与其他模型类似C# 如何解决SQL在代码首次迁移到部署Azure期间找不到数据类型BLOB的问题,c#,sql,azure,asp.net-core,C#,Sql,Azure,Asp.net Core,我想将当前在ASP.NET Core上使用的sqlite数据库与Azure SQL进行交换。我生成了资源SQL server project上定义的所有内容 当我想将应用程序发布到azure部署服务器和云中的sql数据库时,它说找不到数据类型BLOB。我检查了internet上的解决方案,但没有工作。我想我必须更新我的模型,但我不知道用什么方法 首先,我将useSqlLiteServer更改为UseSqlServer 我还应该在下面列出的模型上更改什么?下面列出的一个模型与其他模型类似 name
namespace HospitalAppointmentAPI.Models
{
public class Patient
{
public int Id { get; set; }
public string IdentityNumber { get; set; }
public string Name { get; set; }
public byte[] PasswordHash { get; set; }
public byte[] PasswordSalt { get; set; }
public DateTime BirthDate { get; set; }
public string Email { get; set; }
public ICollection<Appointment> Appointments { get; set; }
}
}
DataContext.cs
EF迁移脚本生成期间的完整错误消息
C:\程序
Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.sdk.Publish\targets\PublishTargets\Microsoft.NET.sdk.Publish.MSDeploy.targets140,5:
错误:Web部署任务失败。过程中发生错误
数据库脚本的执行。错误发生在
脚本的以下行:23和39。详细日志可能会丢失
有关于错误的更多信息。命令以
以下:
如果不存在,请从[\uu efmigrationshistori]中选择*
列、参数或变量4:找不到数据类型BLOB。有关详细信息,请访问:
.
未能发布数据库。如果远程数据库无法运行脚本,则可能会发生这种情况。请尝试修改数据库脚本,或
在包/发布Web属性中禁用数据库发布
如果由于数据库表已存在而导致脚本失败,请重试
在创建新数据库对象之前删除现有数据库对象。有关详细信息,请参阅
有关从Visual Studio执行这些选项的信息,请参见
.
错误详细信息:
执行数据库脚本期间出错。错误发生在脚本的以下行之间:23和
39.详细日志可能包含有关错误的更多信息
命令以以下内容开始:
如果不存在,请从[\uu efmigrationshistori]中选择*
列、参数或变量4:找不到数据类型BLOB。有关详细信息,请访问:
.
列、参数或变量4:找不到数据类型BLOB。
位于System.Data.SqlClient.SqlConnection.OneErrorSqlException异常、布尔断开连接、Action1 wrapCloseInAction
位于System.Data.SqlClient.SqlInternalConnection.OnErrorSqlException
异常、布尔断开连接、Action1 wrapCloseInAction
位于System.Data.SqlClient.TdsParser.ThroweException和WarningDsParserStateObject
stateObj,布尔调用方连接锁,布尔异步关闭
在System.Data.SqlClient.TdsParser.TryRunRunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、,
BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject
stateObj、Boolean和dataReady
位于System.Data.SqlClient.SqlCommand.RunExecuteOnQueryTDString
methodName、布尔异步、Int32超时、布尔异步写入
位于System.Data.SqlClient.SqlCommand.InternalExecutionQueryTaskCompletionSource`1
完成,字符串方法名,布尔sendToPipe,Int32超时,
Boolean&usedCache、Boolean异步写入、Boolean索引
在System.Data.SqlClient.SqlCommand.ExecuteOnQuery
位于Microsoft.Web.Deployment.DBStatementInfo.ExecuteBConnection
连接、DbTransaction事务、DeploymentBaseContext
baseContext,Int32超时
发布未能部署
在Sqlite中,BLOB类型用于存储字节数组。在SQL Server中,byte[]类型受支持
在您的例子中,您首先使用Sqlite,然后更改为使用SQL Server。因此,您需要删除迁移脚本历史记录
然后为SQl Server数据库创建并应用初始迁移:
dotnet ef migrations add init -o Data\Migrations
dotnet ef database update
然后将在SQL Server数据库中创建表。应用程序将准备好运行。在Sqlite中,类型BLOB用于存储字节数组。在SQL Server中,类型byte[]受支持
在您的例子中,您首先使用Sqlite,然后更改为使用SQL Server。因此,您需要删除迁移脚本历史记录
然后为SQl Server数据库创建并应用初始迁移:
dotnet ef migrations add init -o Data\Migrations
dotnet ef database update
然后将在SQL Server数据库中创建表。您的应用程序将准备好运行。根据错误,您在代码中使用的数据类型可能无法转换为SQL Server数据类型。有关SQL Server数据类型的更多详细信息,请参阅?此外,您能否提供脚本?我是否可以知道您已尝试为SQl Server数据库创建并应用初始迁移?在更新我的SQl Server数据库后,我可以成功地从Sqlite切换到SQl Server。根据错误,您在代码中使用的数据类型可能无法转换为SQl Server数据类型。有关SQl Server数据类型的详细信息,请参阅r to?另外,你能提供你的剧本吗?我可以知道你是否试过吗 为SQl Server数据库创建并应用初始迁移?更新SQL Server数据库后,我可以成功地从Sqlite切换到SQL Server。
dotnet ef migrations add init -o Data\Migrations
dotnet ef database update