Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Sql Server解决EF 6中不支持的DateTimeOffset问题?_C#_.net_Entity Framework 6_Datetimeoffset - Fatal编程技术网

C# 如何使用Sql Server解决EF 6中不支持的DateTimeOffset问题?

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)

当我尝试实例化DbContext时,收到以下消息:

System.NotSupportedException:没有与基元类型“DateTimeOffset”的概念端类型“DateTimeOffset”对应的存储类型

我正在SQL Server上使用实体框架版本6

DbContext的构造函数以及引发异常的行如下所示:

    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的名称匹配,问题就消失了

当然,抛出的异常对我没有帮助

我将此列在这里作为一个答案,以便将来其他人可能会找到此答案,或者至少知道这种异常可以在各种情况下抛出