C# 如何使用Sql Server解决EF 6中不支持的DateTimeOffset问题?
当我尝试实例化DbContext时,收到以下消息: System.NotSupportedException:没有与基元类型“DateTimeOffset”的概念端类型“DateTimeOffset”对应的存储类型 我正在SQL Server上使用实体框架版本6 DbContext的构造函数以及引发异常的行如下所示:C# 如何使用Sql Server解决EF 6中不支持的DateTimeOffset问题?,c#,.net,entity-framework-6,datetimeoffset,C#,.net,Entity Framework 6,Datetimeoffset,当我尝试实例化DbContext时,收到以下消息: System.NotSupportedException:没有与基元类型“DateTimeOffset”的概念端类型“DateTimeOffset”对应的存储类型 我正在SQL Server上使用实体框架版本6 DbContext的构造函数以及引发异常的行如下所示: internal TestHubContext(string connectionStringName) : base(connectionStringName)
internal TestHubContext(string connectionStringName) : base(connectionStringName)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
...
}
public class Order
{
[Key]
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public System.Guid Id { get; set; }
[MaxLength(60)]
[Required]
public string CreatedBy { get; set; }
[Required]
public System.DateTimeOffset CreatedUtcDate { get; set; }
}
CREATE TABLE [dbo].[Orders](
[Id] [uniqueidentifier] NOT NULL,
[CreatedBy] [nvarchar](60) NOT NULL,
[CreatedUtcDate] [datetimeoffset](7) NOT NULL,
首先使用代码创建实体,如下所示:
internal TestHubContext(string connectionStringName) : base(connectionStringName)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
...
}
public class Order
{
[Key]
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public System.Guid Id { get; set; }
[MaxLength(60)]
[Required]
public string CreatedBy { get; set; }
[Required]
public System.DateTimeOffset CreatedUtcDate { get; set; }
}
CREATE TABLE [dbo].[Orders](
[Id] [uniqueidentifier] NOT NULL,
[CreatedBy] [nvarchar](60) NOT NULL,
[CreatedUtcDate] [datetimeoffset](7) NOT NULL,
数据库迁移运行良好,生成了如下表:
internal TestHubContext(string connectionStringName) : base(connectionStringName)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
...
}
public class Order
{
[Key]
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public System.Guid Id { get; set; }
[MaxLength(60)]
[Required]
public string CreatedBy { get; set; }
[Required]
public System.DateTimeOffset CreatedUtcDate { get; set; }
}
CREATE TABLE [dbo].[Orders](
[Id] [uniqueidentifier] NOT NULL,
[CreatedBy] [nvarchar](60) NOT NULL,
[CreatedUtcDate] [datetimeoffset](7) NOT NULL,
因此,相关的数据类型存在于数据库和C代码中。我有点不明白为什么会这样
这是我得到的堆栈跟踪:
位于System.Data.Entity.SqlServer.SqlProviderManifest.GetStorePrimitiveTypeIfsPostSql9String storeTypeName,String nameForException,PrimitiveTypeKind PrimitiveTypeKind
位于System.Data.Entity.SqlServer.SqlProviderManifest.GetStoreTypeUsage edmType
在System.Data.Entity.ModelConfiguration.Edm.Services.StructureTypeMappingGenerator.MapTableColumnedProperty属性、字符串columnName、布尔值isInstancePropertyOnDerivedType中
位于System.Data.Entity.ModelConfiguration.Edm.Services.PropertyMappingGenerator.GenerateEntityType entityType、IEnumerable1属性、EntitySetMapping EntitySetMapping、MappingFragment entityTypeMappingFragment、IList1 propertyPath、Boolean createNewColumn
位于System.Data.Entity.ModelConfiguration.Edm.Services.TableMappingGenerator.GenerateEntityType entityType,DbDatabaseMapping databaseMapping
位于System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEntityTypesDbDatabaseMapping数据库映射
在System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEdmModel conceptualModel中
位于System.Data.Entity.DbModelBuilder.BuildDbProviderManifest providerManifest,DbProviderInfo providerInfo
位于System.Data.Entity.DbModelBuilder.BuildDbConnection providerConnection
位于System.Data.Entity.Internal.LazyInternalContext.CreateModelLazyInternalContext
在System.Data.Entity.Internal.RetryLazy`2.GetValueTInput输入中
位于System.Data.Entity.Internal.LazyInternalContext.InitializeContext
位于System.Data.Entity.Internal.InternalContext.ForceOSpaceLoadingForKnownEntityTypes
位于System.Data.Entity.DbContext.System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext
如果您有任何解决此问题的方法,而不必破解数据类型,我将不胜感激。Facepalm!
此问题是由配置文件中连接字符串的名称输入错误引起的
一旦我确保配置中连接字符串的名称与提供给DbContext的名称匹配,问题就消失了
当然,抛出的异常对我没有帮助
我将此列在这里作为一个答案,以便将来其他人可能会找到此答案,或者至少知道这种异常可以在各种情况下引发。Facepalm!
此问题是由配置文件中连接字符串的名称输入错误引起的
一旦我确保配置中连接字符串的名称与提供给DbContext的名称匹配,问题就消失了
当然,抛出的异常对我没有帮助
我将此列在这里作为一个答案,以便将来其他人可能会找到此答案,或者至少知道这种异常可以在各种情况下抛出