簡體   English   中英

首先使用代碼從數據庫視圖中檢索數據時出錯

[英]Error while retrieving data from database view using code first

我的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;
    ////
    ///
}

我收到此錯誤:

RentalHost.exe中出現未處理的“System.ArgumentException”類型異常

附加信息:數據庫名稱“System.Activities.DurableInstancing.Instances”無效。 數據庫名稱必須為[。]格式。

你的方法應該是這樣的

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

我已經解決了我的問題,只需將以下行放在我的上下文類的構造函數中(即WFPersistenceStore)。

Database.SetInitializer<WFPersistenceStore>(null);

如果我沒有錯的話,官方文件中沒有明確提到這一點。

上述行僅適用於EF6版本,但早期版本的EF不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM