当前位置: 首页 > 知识库问答 >
问题:

实体框架- Azure表存储提供程序-映射时间戳时出错

端木承业
2023-03-14

我目前正在使用EF:EntityFramework.AzureTableStorage7.0.0-beta1访问Azure存储表。

配置模型时,我已将 TableEntity 的时间戳属性映射到模型的属性:

public class Subscription
{
    public string Environment { get; set; }

    public string Name { get; set; }

    public DateTimeOffset LastModification { get; set; }

    ...
    ...            
}

public class EF7Context : DbContext
{
    public DbSet<Subscription> Subscriptions { get; set; }

    protected override void OnConfiguring(DbContextOptions options)
    {
        options.UseAzureTableStorage("MyconnectionString");
    }

    protected override void OnModelCreating(Microsoft.Data.Entity.Metadata.ModelBuilder modelBuilder)
    {
        // Configure the Azure Table Storage
        modelBuilder.Entity<Subscription>()
            .ForAzureTableStorage() // Data are stored in an Azure Table Storage.
            .Table("SubscriptionDev") // Name of the Table in the Azure Storage Account
            .Timestamp(s => s.LastModification) // Map the timestamp
            .PartitionAndRowKey(s => s.Environment, s => s.Name); // Map the partition and the row key
    }
}

在插入新实体时,每件事听起来都不错,我可以使用LastModization检索新创建的实体,但是如果我实例化了第二个DbContext,则无法检索我的实体:

using (var context = new EF7Context())
{
    // Create the entity
    var subscription = new Subscription() {Environment = "Dev", Name = "subscriptionName" };
    context.Subscriptions.Add(subscription);
    context.SaveChanges();

    // Retrieve the entity in the same context => I assume entity has been cached ?
    subscription = context.Subscriptions.SingleOrDefault(s => s.Name == "subscriptionName");
}

// Create new instance of the DbContext
using (var context = new EF7Context())
{
    // Exception thrown here
    var subscription = context.Subscriptions.SingleOrDefault(s => s.Name == "subscriptionName");
}

异常详细信息:

Microsoft.WindowsAzure.Storage.StorageException未处理HResult=-2146233088 Message=无法从'13'中读取'DateTimeOffset'类型的值Source=Microsoft.WindowsAzure.Storage

从Azure存储帐户检索数据时,映射似乎不起作用。

有人知道解决方法吗(除了删除时间戳映射)?

共有1个答案

邹时铭
2023-03-14

如前所述,EF Azure Table Storage beta1是一个现已停产的原型。另请参见https://stackoverflow.com/a/35071077/2526265.(在撰写本报告时),该软件尚未处于开发阶段。

 类似资料:
  • 我试图连接我的实体框架在MySQL数据库,但当我连接这个错误发生 找不到具有固定名称“mysql.data.mysqlclient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。 这是我的类库whit实体的a

  • 错误消息: System.InvalidOperationException:未找到具有固定名称“System.Data.SqlClient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。

  • 问题内容: 我正在尝试将Entity Framework与MySQL配合使用,但出现上述错误。我安装了最新的MySQL连接器。 完整错误为: 但是,我找不到任何建议说明您如何在“ entityFramework”部分中进行注册的内容。 其他一些帖子(例如)建议将提供程序添加到该 部分中,如下所示: 但这不起作用,因为它声称名称是重复的。而且,如果我实际上遍历了,我可以看到最后一个是MySQL提供程

  • 我有一个与问题“找不到具有固定名称”System.Data.SqlClient“的ADO.NET提供程序的实体框架提供程序”中提供的问题类似的问题,错误包含以下消息: “具有固定名称”System.Data.SqlClient“的ADO.NET提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。” 正如相关问题的答案所提示的,我已经通过包管理器控制台重新安装了实

  • 我已将 Cosmos DB 集成到我的 ASP.NET 核心 API 项目中,使用 Cosmos DB 提供程序附带的最新 EF 核心包。 当在本地ASF集群中运行时,我能够成功地使用这个提供者,连接到本地Cosmos DB模拟器实例。然而,当试图在本地ASF或Azure托管的ASF中运行时,我无法连接到Azure Cosmos DB实例。由于某种原因,在初始化数据库/集合的种子时,我一直收到40

  • 问题内容: 我已经制作了一个简单的Entity Framework ASP Core Application,它可以工作,但是我不知道为什么: 我做了这样的上下文: 我有两个表,像这样的模型: 有趣的是,当我运行我的应用程序时,它实际上可以拾取数据。似乎很奇怪,因为我没有指定任何表映射。我假设这只是自动映射,因为指定的表具有相同的名称。 我的问题是: 如果我不希望模型名称与数据库完全相同,该如何指