2016-10-01 7 views
1

私の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; 
    //// 
    /// 
} 

と接続しています方法です:

An unhandled exception of type 'System.ArgumentException' occurred in RentalHost.exe

Additional information: The database name 'System.Activities.DurableInstancing.Instances' is invalid. Database names must be of the form [.].

+0

テーブル名は[schema]。[object_name]という形式にする必要があります。名前を変更してみてください。 –

+0

私はそうした方法で試しましたが、モデルが一致しないために更新する必要があると不平を言います。その場合、ビュースキームではなく、実際のテーブルスキームとPOCOクラスが一致します。私が何を意味するのか理解してもらいたいと思います。 – immirza

答えて

0

ようにする必要があり、私が解決しました私の問題は次の行を入力するだけです私のコンテクストクラスのコンストラクタの内部(つまり、 WFPersistenceStore)。

Database.SetInitializer<WFPersistenceStore>(null); 

これは私が間違っていないと公式文書ではっきりと言及されていませんでした。

上記の行はEF6バージョンにのみ必要ですが、以前のバージョンのEFでは必要ありません。

0

あなたの方法は

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

このようにしても、同じエラーが発生する "データベースが作成されて以来、 'WFPersistenceStore'コンテキストをサポートしているモデルが変更されています。 238269)。 – immirza

関連する問題