C# 首先使用代码从数据库视图检索数据时出错

C# 首先使用代码从数据库视图检索数据时出错,c#,.net,entity-framework,C#,.net,Entity Framework,我的SQL数据库中有一个视图。我只想从该视图中检索数据 我添加了POCO类 namespace WFPersistence.DataModel { public class Instance { public Guid InstanceId { get; set; } public DateTime? PendingTimer { get; set; } public DateTime? CreationTime { ge

我的SQL数据库中有一个视图。我只想从该视图中检索数据

我添加了POCO类

namespace WFPersistence.DataModel
{
     public class Instance
     {
         public Guid InstanceId { get; set; }
         public DateTime? PendingTimer { get; set; }
         public DateTime? CreationTime { get; set; }
         public DateTime? LastUpdatedTime { get; set; }
         public int? ServiceDeploymentId { get; set; }
         public string SuspensionExceptionName { get; set; }
         public string SuspensionReason { get; set; }
         public string ActiveBookmarks { get; set; }
         public string CurrentMachine { get; set; }
         public string LastMachine { get; set; }
         public string ExecutionStatus { get; set; }
         public bool? IsInitialized { get; set; }
         public bool? IsSuspended { get; set; }
         public bool? IsCompleted { get; set; }
         public byte? EncodingOption { get; set; }
         public byte[] ReadWritePrimitiveDataProperties { get; set; }
         public byte[] WriteOnlyPrimitiveDataProperties { get; set; }
         public byte[] ReadWriteComplexDataProperties { get; set; }
         public byte[] WriteOnlyComplexDataProperties { get; set; }
         public string IdentityName { get; set; }
         public string IdentityPackage { get; set; }
         public long? Build { get; set; }
         public long? Major { get; set; }
         public long? Minor { get; set; }
         public long? Revision { get; set; }
     }

     public class Instances : Collection<Instance>
     {
     }
}
我得到这个错误:

中发生类型为“System.ArgumentException”的未处理异常 RentalHost.exe

其他信息:数据库名称 “System.Activities.DurableInstance.Instances”无效。数据库 名称的格式必须为[。]


你的方法应该是

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Instance>().ToTable("Instances");
        }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“实例”);
}

您的方法应该是

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Instance>().ToTable("Instances");
        }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“实例”);
}

我已经解决了我的问题,只需在我的上下文类(即WFPersistenceStore)的构造函数中放入以下行即可

Database.SetInitializer(null);
如果我没有错的话,官方文件中没有明确提到这一点


上面这一行仅适用于
EF6
版本,而早期版本的EF不需要。

我已通过将下面这一行放在上下文类(即WFPersistenceStore)的构造函数中解决了我的问题

Database.SetInitializer(null);
如果我没有错的话,官方文件中没有明确提到这一点


上面的一行仅适用于
EF6
版本,但早期版本的EF不需要。

您的表名需要采用[schema].[object\u name]的格式-尝试重命名它。我尝试过这样做,但它抱怨模型不匹配,需要更新。因为在这种情况下,它将我的POCO类与实际的表方案相匹配,而不是与视图方案相匹配。希望您理解我的意思。您的表名需要采用[schema].[object\u name]的形式。请尝试重命名它。我尝试过这样做,但它抱怨模型不匹配,需要更新。因为在这种情况下,它将我的POCO类与实际的表方案相匹配,而不是与视图方案相匹配。希望你能理解我的意思。即使这样,它也会产生同样的错误。“创建数据库的支持”WfSturnStestOrn'上下文已经改变。考虑使用代码第一迁移来更新数据库()。“自创建数据库以来,支持“WFPersistenceStore”上下文的模型已更改。考虑使用代码第一迁移来更新数据库()。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Instance>().ToTable("Instances");
        }
Database.SetInitializer<WFPersistenceStore>(null);