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

时间:2016-10-01 10:57:28

标签: 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 { 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>
     {
     }
}

这就是我尝试使用视图进行映射的方式。

 public class WFPersistenceStore : DbContext
 {
     public WFPersistenceStore() : base("WFPersist")
     {
     }

     public DbSet<Instance> PersistedInstances { get; set; }

     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
         modelBuilder.Entity<Instance>().ToTable("System.Activities.DurableInstancing.Instances");
     }
 }

这就是我与视图的连接方式

using (var PersistStore = new WFPersistenceStore())
{
    var result = from t in PersistStore.PersistedInstances
                 select t;
    ////
    ///
}

我收到此错误:

  

未处理的类型&#39; System.ArgumentException&#39;发生在   RentalHost.exe

     

其他信息:数据库名称   &#39; System.Activities.DurableInstancing.Instances&#39;是无效的。数据库   名称必须是[。]。

的形式

2 个答案:

答案 0 :(得分:0)

你的方法应该是

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Instance>().ToTable("Instances");
        }

答案 1 :(得分:0)

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

Friendly Chat

如果我没有错,这在官方文件中没有明确提及。

上述行仅适用于Project Auth版本,但早期版本的EF不需要。