"Implicit conversion from data type nvarchar(max) to varbinary is not allowed" 使用 EF6 存储数据时出错
"Implicit conversion from data type nvarchar(max) to varbinary is not allowed" error when storing data using EF6
我有两个模型 classes - 都有一个 byte[]
字段用于存储 PDF 文件。
在数据库中,两个模型 classes 对应两个 tables - 都有一个 varbinary(max)
列。
对于一个模型 class,我可以轻松地坚持到 SQL 服务器,但是对于另一个 class + table 我得到错误
Implicit conversion from data type nvarchar(max) to varbinary is not allowed
这两个class和table基本相似——除了名字。
我查看了很多针对此错误的答案,但找不到任何使用 EF6 的答案。我手动创建了数据库 tables 和 classes - 所以不涉及自动生成。
希望有人能帮我解决这个错误。
提前致谢
尝试将列类型从 varbinary(max)
更改为 nvarchar(max)
。
尝试删除 table 并从头开始创建
//Pdf
[Table("SelfBillings")]
public class SelfBilling
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string OwnerId { set; get; }
public long BookingId { set; get; }
public long SelfBillingNumber { set; get; }
public DateTime Date { get; set; }
public DateTime PeriodStart { set; get; }
public DateTime PeriodEnd { set; get; }
public decimal PeriodDays { get; set; }
public decimal PeriodHours { get; set; }
public decimal RentalAmount { get; set; }
public decimal RentalAmountTotal { get; set; }
public decimal VatAmount { get; set; }
public decimal TotalAmount { get; set; }
public decimal TotalAmountInclVat { get; set; }
//Pdf
public byte[] Attachment { set; get; }
}
//Database table
CREATE TABLE [dbo].[SelfBillings]
(
[Id] [BIGINT] IDENTITY(1,1) NOT NULL,
[OwnerId] [VARBINARY](128) NOT NULL,
[BookingId] [BIGINT] NOT NULL,
[SelfBillingNumber] [BIGINT] NOT NULL,
[Date] [DATETIME2](7) NOT NULL,
[PeriodStart] [DATETIME2](7) NOT NULL,
[PeriodEnd] [DATETIME2](7) NOT NULL,
[PeriodDays] [DECIMAL](10, 2) NOT NULL,
[PeriodHours] [DECIMAL](10, 2) NOT NULL,
[RentalAmount] [DECIMAL](10, 2) NOT NULL,
[RentalAmountTotal] [DECIMAL](10, 2) NOT NULL,
[VatAmount] [DECIMAL](10, 2) NOT NULL,
[TotalAmount] [DECIMAL](10, 2) NOT NULL,
[TotalAmountInclVat] [DECIMAL](10, 2) NOT NULL,
[Attachment] [VARBINARY](MAX) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
//Mapping
modelBuilder.Entity<SelfBilling>().ToTable("SelfBillings");
我希望在 table SelfBillings
中创建一条记录。
附件是 NVARBINARY(MAX) 但我想知道它是否在抱怨:
[OwnerId] [VARBINARY](128) NOT NULL,
开始映射到
public string OwnerId { set; get; }
它需要一个 byte[]
类型,而不是该字段的字符串。
我有两个模型 classes - 都有一个 byte[]
字段用于存储 PDF 文件。
在数据库中,两个模型 classes 对应两个 tables - 都有一个 varbinary(max)
列。
对于一个模型 class,我可以轻松地坚持到 SQL 服务器,但是对于另一个 class + table 我得到错误
Implicit conversion from data type nvarchar(max) to varbinary is not allowed
这两个class和table基本相似——除了名字。
我查看了很多针对此错误的答案,但找不到任何使用 EF6 的答案。我手动创建了数据库 tables 和 classes - 所以不涉及自动生成。
希望有人能帮我解决这个错误。
提前致谢
尝试将列类型从 varbinary(max)
更改为 nvarchar(max)
。
尝试删除 table 并从头开始创建
//Pdf
[Table("SelfBillings")]
public class SelfBilling
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string OwnerId { set; get; }
public long BookingId { set; get; }
public long SelfBillingNumber { set; get; }
public DateTime Date { get; set; }
public DateTime PeriodStart { set; get; }
public DateTime PeriodEnd { set; get; }
public decimal PeriodDays { get; set; }
public decimal PeriodHours { get; set; }
public decimal RentalAmount { get; set; }
public decimal RentalAmountTotal { get; set; }
public decimal VatAmount { get; set; }
public decimal TotalAmount { get; set; }
public decimal TotalAmountInclVat { get; set; }
//Pdf
public byte[] Attachment { set; get; }
}
//Database table
CREATE TABLE [dbo].[SelfBillings]
(
[Id] [BIGINT] IDENTITY(1,1) NOT NULL,
[OwnerId] [VARBINARY](128) NOT NULL,
[BookingId] [BIGINT] NOT NULL,
[SelfBillingNumber] [BIGINT] NOT NULL,
[Date] [DATETIME2](7) NOT NULL,
[PeriodStart] [DATETIME2](7) NOT NULL,
[PeriodEnd] [DATETIME2](7) NOT NULL,
[PeriodDays] [DECIMAL](10, 2) NOT NULL,
[PeriodHours] [DECIMAL](10, 2) NOT NULL,
[RentalAmount] [DECIMAL](10, 2) NOT NULL,
[RentalAmountTotal] [DECIMAL](10, 2) NOT NULL,
[VatAmount] [DECIMAL](10, 2) NOT NULL,
[TotalAmount] [DECIMAL](10, 2) NOT NULL,
[TotalAmountInclVat] [DECIMAL](10, 2) NOT NULL,
[Attachment] [VARBINARY](MAX) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
//Mapping
modelBuilder.Entity<SelfBilling>().ToTable("SelfBillings");
我希望在 table SelfBillings
中创建一条记录。
附件是 NVARBINARY(MAX) 但我想知道它是否在抱怨:
[OwnerId] [VARBINARY](128) NOT NULL,
开始映射到
public string OwnerId { set; get; }
它需要一个 byte[]
类型,而不是该字段的字符串。